首页 > 解决方案 > 在 Laravel 中使用 AJAX 编辑字段

问题描述

我正在尝试$medic->current根据我的逻辑更新字段。我是 ajax 新手,我只需要开始它。

在我的代码中,我计算两个日期之间的差异{ $medic->end_day ,当前日期}。根据他们的日期差异,我更改了“当前”字段。如果差异 < 0 ,则 current = 0 否则 current = 1 是我想要做的。

那么如何使用 AJAX 来编辑$medic. 下面是代码。

<script>
          window.onload = checkcurrent;
          var today = new Date();   

          @foreach($medics as $medic)
            @if($medic->current == 1)
              function checkcurrent()
              {
                var status = {{$medic->current}};
                var last_date= new Date('{{ \Carbon\Carbon::createFromFormat('d/m/Y', $medic->end_day)->toDateString() }}');                
                var new_last_date = new Date(last_date.getFullYear(),last_date.getMonth(),last_date.getDate());
                var diff = parseInt((new_last_date - today) / (1000 * 60 * 60 * 24));                 
                if(diff<0)
                {
                  status = 0;

                  $.ajax({ 
                   url: "stocks/{stock_tag}/medications/updatecurrent/{info_id}", 
                  type: "put", 
                  data: { current: 0 } , 
                  success: function (response) { 
                    console.log('success');                    
                  }, 
                  error: function(jqXHR, textStatus, errorThrown) { 
                  console.log(textStatus, errorThrown); 
                  }             
                 }); 
                }                  
                else
                {
                  status = 1;                     
                }                           
              }
            @endif
          @endforeach



      </script>  

这也是我在控制器中的功能:

public function updatecurrent($stock_tag,$info_id)
    {
        $stock = Stock::find($stock_tag);
        $findInformation= Medication::where('id','=',$info_id)->first();

        $id=Input::get('current');
        $stock->under_medication=$id;        
        $findInformation->current=$id;
        $stock->save();
        $findInformation->save();
    }

我只需要有关 ajax 代码的帮助,因为休息很好并且可以工作。当状态为 0 时,我想将“当前”字段编辑为 0。如何执行此操作?

标签: javascriptajaxlaravel

解决方案


我已经解决了我的问题。我实际上在模型本身中创建了一个函数来实现我的结果。

下面是代码:

public function autocheck()
    {
        $stock =Stock::where('tag_no','=', $this->attributes['tag'])->first();
        $medication =Medication::where('tag','=',$stock->tag_no)->where('current','=',1)->first();        
        $today = Carbon::now();
        list($enddays_day, $enddays_month, $enddays_year) = explode('/', $medication->end_day);
        $last_day = Carbon::createFromDate($enddays_year,$enddays_month,$enddays_day);
        $difference = $last_day->diffInDays($today);

        if ($difference == 0) {
            return "ends today";
        }
        else
        if ($last_day < $today)
        {
            $medication->current = 0;
            $stock->under_medication = 0;
            $medication->save();
            $stock->save();
            return "Finished Medication ";
        }
        else
        {            
            return $difference." day left";
        }        

    }

要使该功能正常工作,只需使用{{$paramater->function_name()}}. 下面是我的代码:

@if ($medic->current == 1)
 <h2>Status : {{ $medic->autocheck() }}</h2> 
@endif 

推荐阅读