javascript - 在 jqueryUI 自动完成中使用 JSON-Object

标签 javascript jquery json jquery-ui

我正在从外部域加载一个 JSON 数组。我已经让它正常工作,但我在实际显示任何结果时仍然遇到问题。 使用示例和其他问题/答案,我已经尝试显示显然正在制作的结果,但以 Uncaught Error 结束:

Uncaught TypeError: Cannot read property 'label' of undefined

代码片段:

$('#citySearchBox').autocomplete({
      source: function(request, response){
          $.ajax({
              url: "/api.php",
              data: {action: "search", input: request.term},
              dataType: "jsonp"
          });
          response(function(data){
              return $.parseJSON(data);
          });
      },
      minLength: 3
  });

在调试器中看到的服务器响应:

[{"id":"1.3.0.0.0.0","label":"Berlin (10115)","value":"index.php?action=city&city=1.3.0.0.0.0"}, etc...]

如您所见,我尝试使用所示方法将字符串解析为 JS 对象,还尝试了 JSON.parse(data)

如果我在“回复”部分之前犯了一个错误,但不知何故设法中途回避了它,请指出我的错误。

编辑:

我已经根据 Bradys 的建议更改了代码,但我似乎在语法上做错了什么,因为在响应函数内放置一个断点没有任何停止。

这是更新后的响应函数:

response( function(data){
        var items = data.text().slice(1, -1).split(',');
        for(i=0; i < (items.length - 3); i=i+3)
        {
            items[i] = $.parseJSON(items[i]) + ','
             + $.parseJSON(items[i+1]) + ',' + $.parseJSON(items[i+2]);
        }
        return items;
    });

案例结束,从未真正让 JSONP 起作用,但情况发生了变化,不再依赖于跨域通信。

对于任何感兴趣的工作代码如下:

  $('#searchBox').autocomplete({
      source: function(request, response){
          $.ajax({
              type: "GET",
              url: "api.php",
              async: true,
              data: {action: "search", input: request.term},
              success: function(data){
                  var items  = $.parseJSON(data);
                  response(items);
              }
          });
      },
      select: function(event, ui){
          $('#searchBox').val(ui.item.value);
          window.location.href = ui.item.url;
      },
      minLength: 2
  });

最佳答案

您从服务器获得的不是 JSON 字符串。它是一个数组。 您应该拆分数组并单独解析每个对象。

关于javascript - 在 jqueryUI 自动完成中使用 JSON-Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876339/

相关文章:

javascript - 方法 "showDate"在组件定义中具有类型 "undefined"

java - Struts 2、多 View 和 jQuery - 如何重用通用代码?

php json_encode 对相同的数据进行两次编码

javascript - 在 Javascript 中创建一个真正的抽象类

javascript - Canvas For循环线

javascript - 如何使用下划线根据自定义排序顺序对对象数组进行排序

jquery - 让 JS 加载到 JQM 页面上

jquery:速记 - 对多个 id 不显示任何内容

jquery - 无法在客户端 html 上打印 json 响应

c++ - rapidjson - 更改对象 - 添加元素/项目