Javascript 在jqueryUI自动完成中使用JSON对象

Javascript 在jqueryUI自动完成中使用JSON对象,javascript,jquery,json,jquery-ui,Javascript,Jquery,Json,Jquery Ui,我正在从外部域加载JSON数组。我已经得到了正确的工作,但我仍然有问题,实际上显示任何结果。 使用示例和其他问题/答案,我试图显示明显的结果,但以未捕获的错误结束: 未捕获的TypeError:无法读取未定义的属性“label” 代码段: $('#citySearchBox').autocomplete({ source: function(request, response){ $.ajax({ url: "/api.php",

我正在从外部域加载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)”,“值”:“index.php?action=city&city=1.3.0.0.0.0”},等等……]

正如您所看到的,我试图用所示的方法将字符串解析为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;
    });

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

谢谢您的帮助,我在您的建议后对代码进行了更改,但在编辑中已解释了我的进一步问题。我认为您需要删除第一行并在
数据上运行循环。请注意,上面粘贴的服务器响应周围没有引号。我相信你有一个纯数组。这可能是因为您使用了
jsonp
而不是
json
。我认为这里不需要
jsonp
,它是用于跨域请求的,留给您可执行的JavaScript。有关正确使用
jsonp
的更多详细信息,请参见以下问题:谢谢您的帮助。在询问时,我正在跨域工作,但情况发生了变化,所以我摆脱了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
  });