2016-05-17 48 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 
}); 

希望工程