我正在使用jquery-tokeninput并且无法使其工作,当结果包含结果列表时,ajax调用未输入success方法。
我使用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。
服务器以此响应(内容类型: application / json; charset = utf-8)(55字节):
[{id:2,name:'Superuser'},{id:3,name:'Bo Superduper'}]
但下拉列表仍显示“正在搜索...”
按字母x
因此,当服务器确实返回空列表时,一切正常,但如果返回记录,则用户界面不会显示项目。
我尝试了GET和POST请求......
我试图返回[{id:2,名称:“超级用户”},{id:3,名称:“Bo Superduper”}],但结果相同
我试图返回[{id:“2”,名称:“超级用户”},{id:“3”,名称:“Bo Superduper”}],但结果相同
我试图返回[{“id”:“2”,“name”:“超级用户”},{“id”:“3”,“name”:“Bo Superduper”}]但结果相同< / p>
在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请求,并返回但是没有调用success方法?
答案 0 :(得分:0)
您目前如何归还JSON?如果ajax调用没有调用成功,我猜你的反应是某种程度上的错误。例如,在您尝试的4个版本中 - 只有最后一个版本有效。 JSON需要双引号,并且属性名称也在引号中。
我建议在源代码中自动生成JSON字符串,这样可以确保您获得正确的标头类型等。如果是php,你可以使用:
echo json_encode(//PHP Assoc Array Here);