laravel,从输入到控制器功能的ajax调用500错误
Posted
技术标签:
【中文标题】laravel,从输入到控制器功能的ajax调用500错误【英文标题】:laravel, ajax call from input to controller function 500 error 【发布时间】:2019-02-03 10:59:07 【问题描述】:我不确定这是怎么回事,但是当我的 ajax 调用对我的 php 控制器方法进行时,我收到 500 错误,我想知道这可能是数据类型错误还是只是语法错误。
我通过 ajax 调用从表单输入传递到我的函数的值正在传递到我的 service.php 文件中的 url 端点。
ajax 本身正在成功调用函数,但我无法验证函数中 $searchResults 的结果,因为它似乎在传递时失败了。
我开始在浏览器中使用断点在我的输入中键入 Test,它显示我的输入值为“T”。如果在端点查询中使用引号或类似的东西,我是否需要去掉引号?
我在这里做错了什么?a
服务.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);
);
);
【问题讨论】:
将堆栈跟踪放在您的帖子中。 你的意思是从断点开始? 每次按键都会触发输入事件,因此我希望键入“测试”会触发您的功能四次。如果这不是您想要的,请考虑不同的事件,例如更改。 @TomN。从 storage/logs/laravel.log 粘贴错误 @James 不,这就是我想要的,我正在尝试构建一种自动完成类型的功能。如果我输入测试,我会得到 4 个计数,但都是 500 个错误 【参考方案1】:将此添加到您的脑海中
<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。如果这个答案解决了你的问题,请给他的答案加分。
【讨论】:
我可以在不增加头部的情况下做到这一点吗?我正在使用扩展刀片 尝试不使用元数据,但无论如何您都可以将其放入主模板中。 我在那里查看了他的答案并使用了他的建议,所以现在我的 Ajaxdata: "_token": " csrf_token() ", 'search_result':searchResult ,
中有 500 个错误
删除 search_result 周围的引号再试一次:search_result:searchResult
那里也没有变化。我是否需要控制器中的条件才能使其成为 AJAX 调用?以上是关于laravel,从输入到控制器功能的ajax调用500错误的主要内容,如果未能解决你的问题,请参考以下文章
使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯
从一个控制器 LARAVEL 使用 AJAX 调用不同的函数
如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器