自定义框,包含来自Google / Bing的自动填充功能。有没有办法读取收到的json文件?

时间:2014-04-22 02:20:22

标签: javascript jquery json autocomplete jsonp

我尝试使用搜索框构建网页。我想从Bing获取自动完成选项(例如)。

可以通过以下方式从bing获得自动完成功能:

http://api.bing.com/osjson.aspx?query=YOUR_QUERY

我用自动完成小部件编写了一些代码,要求将json作为jsonp,并且我成功地看到(在Fiddler中)json到达。但是因为它只是作为json而不是以所需的格式到达,所以我得到了parseError。 (我在错误函数中看到它。未调用成功函数)

我的代码中的相关部分是:

    $( "#mySesearchBox" ).autocomplete({
      source: function( request, response ) {
        $.ajax({
          url: "http://api.bing.com/osjson.aspx?query=" + request.term,
          dataType: "jsonp",
          ...

有没有办法克服这个问题?

我想过运行一些会得到这样查询的服务器,会要求Bing的json并以所需的格式进行响应。但是,我更喜欢更简单的解决方案。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

完整的工作演示:http://jsfiddle.net/LxXJz/

这使用:http://api.bing.net/qson.aspx

在这里你去"测试"喜欢这个演示http://jsfiddle.net/zNUBc/

轻弹你的整个代码或小提琴我可能会为你解决:)希望这个演示可以帮助你。

<强>码

var url = 'http://api.bing.com/osjson.aspx?JsonType=callback&JsonCallback=?';
$.getJSON(url, {
    query: 'hulk'
}, function (data) {
    document.write(data)
});

更新 16小时后:)

以下是使用http://api.bing.com/osjson.aspx

的解决方案

演示=&gt; http://jsfiddle.net/pW6LZ/

仔细看看这个screeshot:

enter image description here

答案 1 :(得分:0)

bing更新后更新的代码:

success: function (data) {
    console.log(data);
    var suggestions = [];
    $.each(data[1], function (i, val) {
        suggestions.push(val);
    });
    //This returns the top 5 suggestions, instead of a list of over 20 suggestions.
    response(suggestions.slice(0, 5));