jQuery UI自动完成从json文件中获取数据

问题描述:

我非常努力地尝试使用jQuery UI自动完成插件。我看了一些演示,但我仍然无法让它正常工作。我想要做的是从我的json文件中调用名为destination.json的数据。jQuery UI自动完成从json文件中获取数据

这是我到目前为止有:

$("#autocomplete").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "data/destination.json", 
      dataType: "json", 
      success: function(data) { 
       response(data.destinations); 
      } 
     }); 
    } 
}); 

&的HTML

<div class="left">Destination</div> 
<div class="right"><input name="autocomplete" type="text" size="27" id="autocomplete"/></div> 
<div class="clear"></div> 

我在做什么错?谢谢!

&的JSON

{ 
"destinations": [ 
    { 
     "value": "Oceania and Australia", 
     "label": "Australia & South Pacific" 
    }, 
    { 
     "value": "Australia", 
     "label": "Australia" 
    }, 
    { 
     "value": "Brisbane", 
     "label": "Brisbane-Australia" 
    }, 
    { 
     "value": "GoldCoast", 
     "label": "GoldCoast-Australia" 
    }, 
    { 
     "value": "SunshineCoast", 
     "label": "SunshineCoast-Australia" 
    } 
] 
} 
+0

这个代码会发生什么?你在控制台中看到任何错误吗? – ShankarSangoli 2012-02-18 05:55:03

+0

你有什么错误吗?当你自己运行ajax函数时会发生什么?它返回什么? – xanderer 2012-02-18 05:56:39

+1

我没有看到发送数据到json文件和响应函数的任何代码! – 2012-02-18 05:58:44

源可以直接指向将得到的JSON响应的URL。

$("#ac").autocomplete({ 
    source: "data/destination.json", 
    minLength: 2, 
    select: function(event, ui) { 
     if (ui.item) { 
      // do something on successful select of an item 
     } 
    } 
}); 

哦,并且json响应必须采用特定的格式。

[{ 
    "id": 1234, 
    "label": "Australia & South Pacific", 
    "value": "Oceania and Australia", 
    "extrastuff1": "hello", 
    "extrastuff2": "jin" 
}, {...}] 

我想你会得到id,label,value。只是FYI,你也可以发回额外的信息,并在JavaScript访问它,如$("#log").html(ui.item.extrastuff1);

+0

我还是有点感到困惑的是什么意思..对不起,我真的没有太多的经验与这个和即时寻找教程不是很有帮助 – user713075 2012-02-18 06:21:29

+0

所以标签和价值是不够的? – user713075 2012-02-18 06:28:42

+0

标签和价值应该是足够的。 .bat,data/destination.json是一个静态文件吗? – 2012-02-18 06:40:33