我不确定这是怎么回事,但是当我对我的php控制器方法进行ajax调用时,出现500错误,我想知道这是否可能是数据类型错误或仅仅是语法。 / p>
我通过tha ax调用从表单输入传递到函数的值将传递到service.php文件中的url端点。
ajax本身已经成功调用了该函数,但是我无法验证该函数中$ searchResults的结果,因为它似乎在传递时失败了。
我开始在浏览器中的断点处输入Test,输入的值显示为“ T”。如果端点查询中使用了引号或其他类似内容,是否应该删除引号?
在这里我可能做错了什么?a
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);
}
});
}
});
答案 0 :(得分:3)
将此添加到您的头上
<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);
}
});
}
});
我从this答案中提取了ajax部分,因此感谢Deepak saini。如果此答案解决了您的问题,请给他的答案加分。