laravel,从输入到控制器功能的Ajax调用500错误

时间:2018-08-28 18:22:04

标签: javascript php ajax laravel

我不确定这是怎么回事,但是当我对我的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);
            }
        });
    }

});

1 个答案:

答案 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。如果此答案解决了您的问题,请给他的答案加分。