Jsonp请求使用jquery来获取bing web结果

时间:2010-05-14 13:51:29

标签: javascript jquery json jsonp bing

将此作为指南:http://msdn.microsoft.com/en-us/library/dd250846.aspx

有人可以帮助我进行jquery调用吗?

我是否实际传递了回调的javascript代码,或者只传递了函数的名称?

BingSearch = function($bingUrl, $bingAppID, $keyword, $callBack) {

        $bingUrl = $bingUrl + "?JsonType=callback&JsonCallback=" + $callBack + "&Appid=" +                  $bingAppID + "&query=" + encodeURI($keyword) + "&sources=web";


$.ajax({
            dataType: 'jsonp',
            jsonp: $callBack,
            url: $bingUrl,
            success: function(data) {
                alert('success');
                $callBack(data);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert("error: " + textStatus);
            }
        });

};

更新

好的,所以我将其更改为:

BingSearch = function(bingUrl, bingAppID, keyword, callback) {

    var url = bingUrl + "?method=?&JsonType=callback&Appid=" + bingAppID + "&query=" + encodeURI(keyword) + "&sources=web";

    $.getJSON(url, callback);

};

称之为:

BingSearch(url, appid, searchkeyword, function(searchresults) {

    alert('yes!');
};

仍然收到'无效标签'错误。

2 个答案:

答案 0 :(得分:4)

要将jsonp与jQuery一起使用,请将JsonCallback=UserCallback替换为JsonCallback=?。然后,jQuery将像常规$ .ajax()请求一样处理它。

我建议您开始使用$.getJSON()来熟悉Bing API,并在准备好将其与您的应用程序集成时返回$.ajax()

使用Bing API docs中的示例:

var apikey = 'YOUR_API_KEY';
var url = 'http://api.bing.net/json.aspx?AppId='+apikey+'&Version=2.2&Market=en-US&Query=testign&Sources=web+spell&Web.Count=1&JsonType=callback&JsonCallback=?';
$.getJSON(url, function(data) { console.log(data); });

答案 1 :(得分:1)

需要将

jsonp:设置为字符串(我认为它也可以省略),因为这只是用于接收JSONP的动态创建函数的名称。

但是形式参数$ callBack需要是对函数的引用,所以要么使用

function callback(result){ /*processResultHere*/ }

BingSearch(..,..,.., callback);

BingSearch..,..,.., function(result){ /*processResultHere*/ });

只是你知道,过度使用$真的会伤到我的眼睛:)。

此外,以大写字母开头的函数名称应该保留为“类”,因为许多语法检查器会抱怨函数的大写字母在前面没有new而被调用..