显示JSON源的jQuery自动完成问题

时间:2013-02-05 06:55:41

标签: jquery json

以下是我的jQuery代码:

$("#destinations").autocomplete({
    source: function (request, response) {
        $.getJSON("http://localhost/contactApi.do?&callback=?", 
          { 'contactMobile': request.term, maxRows: 12, style: "full" }, 
          function(data) {
              if(data.ApiResponse){
                  var x = $.map(data.ApiResponse, function(v, i){
                      console.log(v)
                      return {
                          label: v.Mobile + ' - ' + v.Name, 
                          v: v.Name
                      }
                  });
                  response(x);
              }
          }
        );        
    }
})

我可以通过FireBug观察到,因为键入123之类的手机号码,会创建以下JSON响应...

{"ApiResponse":{"Status":1000,"TransactionId":"","Data":{"Contacts":[{"Email":"","Mobile":"123456","Name":"john"}]},"Operation":"api","ResponseTime":"2013-02-05T16:08:33+11:00","StatusText":"Success","RequestTime":"2013-02-05T16:08:33+11:00","Object":"Contact"}} 

这表明jQuery部分工作正常,但在我的输入区域下方没有显示下拉以显示过滤结果。我的脚本或JSON格式有问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

来自JqueryUI自动完成API Autocomplete

  

标签属性显示在建议菜单中。价值会   当用户选择项目时插入到input元素中。如果   只指定了一个属性,它将用于两者,例如,如果你   只提供值属性,该值也将用作   标签

应该是这样的。

return 
     {    label: v.Mobile + ' - ' + v.Name,,
          value: v.Name
     }