2016-05-17 29 views
0

所以我試圖在我的laravel 5.2應用程序中使用jquery ui實現一個簡單的自動完成。但我得到以下錯誤:404未在自動完成laravel中找到

enter image description here

這裏是輸入字段:

<input id="participants" name="participants" type="text"> 

我的JavaScript

$("#participants").autocomplete({ 
    source: "/user/get-users-json", 
    minLength: 1 
}); 

我的路線:

Route::get('user/get-users-json', '[email protected]'); 

我摹etUsersJson方法:

public function getUsersJson() { 

$term = strtolower(Input::get('participants')); 

$data = array('John', 'James', 'Henry', 'Graham', 'Mitthew', 'Rick', 'Tom'); 

$return_array = array(); 

foreach ($data as $value) { 
    if (strpos(strtolower($value), $term) !== false) { 
     $return_array[] = array('value' => $value); 
    } 
} 
return response()->json($return_array); 
} 
} 

當我提交表單/用戶/獲取用戶JSON的,它完美的作品,並打印JSON我需要的網頁,但自動完成本身不工作,我不知道爲什麼。

有什麼建議嗎?提前致謝。

回答

1

的問題是,由jQuery UI的發送的GET參數爲「術語」,而不是「參與者」。所以,我從getUsersJson方法

$term = strtolower(Input::get('participants')); 

改爲

$term = strtolower(Input::get('term')); 

和它的工作!

+0

是的,JQuery自動完成將一個帶有「term」字段的查詢字符串添加到源url中,而不是「input」標籤的名稱。感謝您的解決方案 – absolux

1

由於您嘗試訪問網址user/get-users-json,瀏覽器認爲您想在當前目錄中執行此操作。您可以在錯誤中看到它正在嘗試達到/event/user/get-users-json而不是您想要的。

使用斜槓將其更改爲source: "/user/get-users-json",,開始時告訴瀏覽器將路由追加到基地。這應該足以讓它工作。

+0

現在我得到500(內部服務器錯誤)。然而,如果表格正常提交,我會收到我想要的json。 –

+0

然後我敢打賭,你沒有你的ajax csrf標記,所以當你使用jQuery發送它時,服務器不能驗證請求。 –

1

我覺得你在你的JavaScript函數有錯字

$("#participants").autocomplete({ 
    source: "/user/get-users-json", // use absolute path starting with slash 
    minLength: 1 
}); 

希望工程