1

以此为指导: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!');
};

仍然收到“无效标签”错误。

4

2 回答 2

4

要将 do jsonp 与 jQuery 一起使用,JsonCallback=UserCallback请将JsonCallback=?. jQuery 会像处理普通的 $.ajax()请求一样处理它。

我建议从$.getJSON()习惯 Bing API 开始,然后再回到$.ajax()准备好将其与应用程序集成的时候。

使用Bing API 文档中的示例:

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); });
于 2010-05-14T14:26:27.490 回答
1

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

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

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

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

或者

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

正如你所知道的,过度使用 $ 真的伤害了我的眼睛 :)

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

于 2010-05-14T13:55:26.490 回答