将此作为指南: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!');
};
仍然收到'无效标签'错误。
答案 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
而被调用..