2017-06-12 60 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