我正在使用 jquery-tokeninput 并且无法使其工作,当结果包含结果列表时,ajax 调用未进入成功方法。
我使用 jQuery 版本 1.9.1 和 tokeninput 版本 1.6.1
我正在使用这个 html 和 jquery 脚本:
<input type="text" class="selector" name="users">
$('.selector').tokenInput("/event/usersearch", { method: 'POST', minChars: 2 });
当我测试它时,我得到以下响应:
单击编辑字段为其提供焦点。
- 下拉菜单显示文本“输入搜索词”
按字母 u。
- 下拉菜单按预期消失,因为我将其设置为搜索字符
按字母 p。
- 下拉菜单返回文本“正在搜索...”
- 使用查询字符串“up”向服务器发送请求
服务器响应此(内容类型:应用程序/json;charset=utf-8)(55 字节):
[{id:2, name:'Superuser'},{id:3, name:'Bo Superduper'}]
但下拉菜单仍显示“正在搜索...”
按字母 x
- 使用查询字符串“upx”向服务器设置请求
- 服务器响应(2 个字节):[]
- 下拉菜单更改为“无结果”
因此,当服务器确实返回一个空列表时,一切正常,但如果返回记录,则用户界面不会显示这些项目。
我尝试了 GET 和 POST 请求...
我试图返回 [{id:2, name:"Superuser"},{id:3, name:"Bo Superduper"}] 但结果相同
我试图返回 [{id:"2", name:"Superuser"},{id:"3", name:"Bo Superduper"}] 但结果相同
我试图返回 [{"id":"2", "name":"Superuser"},{"id":"3", "name":"Bo Superduper"}] 但结果相同
在 tokeninput java 脚本文件中,我在 ajax 成功函数的第一行设置了一个断点:
// Attach the success callback
ajax_params.success = function(results) {
cache.add(cache_key, $(input).data("settings").jsonContainer ? results[$(input).data("settings").jsonContainer] : results);
并且不会在包含项目的请求上调用它,但会调用返回空列表的请求。这解释了为什么“正在搜索...”保持打开状态,并且仅在返回空列表时才会更改。
所有请求都返回 http 状态 200 OK。
从字节数来看,utf-8 与 ascii 相同,所以它不应该是编码问题......
所以发送ajax请求,并返回但没有调用成功方法?