[英]AJAX POST request call using Laravel's controller and exclusion from CSRF protection but returns error 500
[英]laravel, ajax call from input to controller function 500 error
我不確定這是怎么回事,但是當我的ajax調用我的php控制器方法時,我得到500錯誤,我想知道它是否可能是數據類型錯誤或只是語法。
我從表單輸入通過ajax調用傳遞到我的函數中的值正被傳遞到service.php文件中的url端點。
ajax本身正在成功調用函數,但我無法驗證函數中$ searchResults的結果,因為它似乎在傳遞時失敗了。
我開始在瀏覽器中輸入帶有斷點的Test輸入,並將輸入的值顯示為“T”。 如果在端點的查詢中使用它,我是否需要刪除引號或類似內容?
還有什么看起來我可能在這里做錯了?
service.php
public function getSearch($query)
{
return $this->get("/search/search?query={$query}" );
}
我還為控制器和功能設置了新的路徑
Route::post('autocomplete','Controller@autoComplete');
Controller.php這樣
public function autoComplete(Request $request)
{
$search_result = $request->search_result;
$service = new service();
//$search_result = "test"; /*this hard coded value works for passing*/
$searchResults = $service->getSearch($search_result);
return $searchResults;
}
view.blade.php
$('#productInput').on('input', function(){
if($(this).val() === ''){
return;
}else{
const searchResult = $(this).val();
$.ajax({ url: '/account/autocomplete',
data: {
'search_result':searchResult
},
type: 'POST',
success: function(response){
console.log(response);
}
});
}
});
把它添加到你的頭上
<meta name="csrf-token" content="{{ csrf_token() }}">
並將令牌傳遞給ajax:
$('#productInput').on('input', function(){
if($(this).val() === ''){
return;
}else{
const searchResult = $(this).val();
$.ajax({ url: '/account/autocomplete',
data: {
'search_result':searchResult
},
"_token": "{{ csrf_token() }}", // **** THIS LINE IS ADDED ***** //
type: 'POST',
success: function(response){
console.log(response);
}
});
}
});
我從這個答案中拿出了ajax部分,感謝Deepak saini 。 如果這個答案解決了你的問題,請給他的答案加分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.