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

时间:2015-11-23 16:50:58

标签: javascript jquery json jquery-ui

我正在从外部域加载JSON数组。我已经让这个工作正常但我仍然有问题实际显示任何结果。 使用示例和其他问题/答案我已经尝试显示显然正在制作的结果,但以未被捕获的错误结束:

  

未捕获的TypeError:无法读取未定义的属性“label”

代码段:

$('#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”, “标签”:“柏林   (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
  });

0 个答案:

没有答案