jQuery-tokeninput没有显示我的搜索结果

时间:2013-05-18 19:41:54

标签: jquery-tokeninput

我正在使用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。

  • 下拉菜单中的文字“正在搜索...”
  • 使用查询字符串“up”
  • 向服务器发送请求
  • 服务器以此响应(内容类型: application / json; charset = utf-8)(55字节):

    [{id:2,name:'Superuser'},{id:3,name:'Bo Superduper'}]

    但下拉列表仍显示“正在搜索...”

按字母x

  • 使用查询字符串“upx”
  • 将请求设置到服务器
  • 服务器响应(2个字节):[]
  • 下拉列表更改为“无结果”

因此,当服务器确实返回空列表时,一切正常,但如果返回记录,则用户界面不会显示项目。

我尝试了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方法?

1 个答案:

答案 0 :(得分:0)

您目前如何归还JSON?如果ajax调用没有调用成功,我猜你的反应是某种程度上的错误。例如,在您尝试的4个版本中 - 只有最后一个版本有效。 JSON需要双引号,并且属性名称也在引号中。

我建议在源代码中自动生成JSON字符串,这样可以确保您获得正确的标头类型等。如果是php,你可以使用:

echo json_encode(//PHP Assoc Array Here);