我試圖在我的 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 文件時它會返回。
為什么我從 jquery ajax 調用中得到 HTML 響應
神不在的星期二
2021-06-03 14:33:44