为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我从 jquery ajax 调用中得到 HTML 响应

为什么我从 jquery ajax 调用中得到 HTML 响应

神不在的星期二 2021-06-03 14:33:44
我试图在我的 Laravel 项目中使用 jQuery UI 自动完成功能来在用户输入时显示一些建议。这是用户输入时触发的脚本:$(".autocomplete").autocomplete({source: function(request, response) {    $.ajax({        url: '/autocomplete',        dataType: "json",        data: {            term : request.term,            field : $(this.element).prop("id")        },        success: function(data) {            console.log(data);            response(data);        },        error: function(result, status, error) {            console.log(result);            console.log(status);            console.log(error);        }    });},min_length: 0, });这是我在 web.php 中的路线Route::get('/autocomplete', 'SitesController@autocomplete');最后我的控制器从数据库中检索结果。public function autocomplete(Request $request) {    $term = \Request::get('term');    $field = \Request::get('field');    $sites = Site::where($field, 'ILIKE', '%'.$term.'%')    ->distinct()    ->get([$field]);    $data = [];    foreach($sites as $key => $site) {        $data[] = $site->$field;    }    return \Response::json($data);}这目前不起作用,但是当我直接将上述代码添加到我的路由文件时,它运行良好。Route::get('/autocomplete', function(){    $term = \Request::get('term');    $field = \Request::get('field');    $sites = Site::where($field, 'ILIKE', '%'.$term.'%')    ->distinct()    ->get([$field]);    $data = [];    foreach($sites as $key => $site) {        $data[] = $site->$field;    }    return \Response::json($data);});我的脚本正在返回一个 HTML 响应,这是我从控制台得到的错误:SyntaxError: Unexpected token < in JSON at position 0    at parse (<anonymous>)    at ajaxConvert (VM258 app.js:18060)    at done (VM258 app.js:18530)    at XMLHttpRequest.<anonymous> (VM258 app.js:18832)我不明白为什么我的脚本没有返回 JSON 而是 HTML,而当我将我的脚本放入 web.php 文件时它会返回。
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

在app/Exceptions/Handler.php文件中你可以做这样的事情


public function render($request, Exception $e)

{

    if ($request->wantsJson()) {

        $response = ... // put your response data here

        return response()->json($response);

    }

    ...

}


查看完整回答
反对 回复 2021-06-13
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

正如 aynber 所建议的,仔细查看返回的 HTML 页面,我意识到这是一个错误页面,当有人试图在没有权限的情况下访问页面时,由于中间件,我抛出了这个错误页面。我的控制器当然首先检查这个中间件。我对自动完成功能做了一个例外,现在一切正常,但我觉得我没有以好的方式处理我的中间件......


查看完整回答
反对 回复 2021-06-13
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信