2017-06-12 63 views
0

我想处理POST数据从Ajax到laravel控制器,但我无法访问它。这就是我在AJAX中所做的。AJAX张贴到laravel返回404没有找到

$.ajax({ 
    type:'POST', 
    url:'/complete_ca_fin', 
    data: {fin_id: id}, 
    success:function(data){ 
     console.log(data); 
     $('#modal_complete').modal('hide'); 
     $('html, body').animate({ 
     scrollTop: 0 }, "slow"); 

     $('#message_form').empty().css('display','block').removeClass('alert-danger').addClass('alert-success').text('Finished Good CA has been successfully completed.'); 
     $('#message_form').fadeOut(4000); 

     setTimeout(function(){ 
      window.location = '/quality_control'; 
     }, 3000); 
     refresh_check = true; 
     window.onbeforeunload = null; 

    }, 
    error: function (data) { 
     console.log('Error: ' + data); 
    } // end of error 

    }); // ajax 

id应该在控制器中访问。下面是我的路线

Route::post('/complete_ca_fin', '[email protected]_ca_fin');

这里是我的控制器

public function complete_ca_fin(Request $request) { 
     $id = $request->id; 
     $complete_ca = FinishedCA::findOrFail($id); 

     if ($complete_ca){ 
     $complete_ca->status = '5'; 
     $complete_ca->save(); 
     return 'success'; 
     } 

     //return 'success'; 

    } 

当我尝试返回$id只是为了测试我发现它是空的(我不知道,如果它有什么用它做)但我知道在ajax var id有价值,因为我在控制台中测试它。

以下是控制台日志的示例。 37是id的值,所以应该在控制器 ​​

回答

0

您正在使用findOrfail,这意味着它会抛出一个404如果没有电子邮件,你想验证它是否存在,而不是404的不存在

public function complete_ca_fin(Request $request) { 
    $id = $request->id; 
    $complete_ca = FinishedCA::find($id); 

    if ($complete_ca->exists()){ 
    $complete_ca->status = '5'; 
    $complete_ca->save(); 
    return 'success'; 
    } 

    //return 'success'; 

} 
+0

我想我失去了请求的价值,我试着做这个'$ id = $ request-> id; return $ id;'并且它返回空。你可以帮我吗?我认为这就是失败的原因。 – user827391012

+0

我现在不知道。原来我需要在我的ajax请求上使用'data:{variable:value}' – user827391012

+0

对不起,应该提到你需要向var添加一个键。很高兴你把它排序,供将来参考'orFail'将返回一个404响应,如果该项目没有被发现,只需使用'find'你必须检查null null :) – Ian

0

使用Input::get('id');,而不是请求的值,所以你的方法会喜欢这个

public function complete_ca_fin(Request $request) { 
     $id = Input::get('id'); 
     $complete_ca = FinishedCA::findOrFail($id); 

     if ($complete_ca){ 
     $complete_ca->status = '5'; 
     $complete_ca->save(); 
     return 'success'; 
     } 

     //return 'success'; 

    } 
+0

'$ request' should work,Input is just a alias。 – Ian