在Laravel中使用AJAX编辑字段

时间:2018-08-23 12:54:01

标签: javascript ajax laravel

我正在尝试根据我的逻辑更新字段$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。 该怎么做?

1 个答案:

答案 0 :(得分:0)

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

下面是代码:

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