Javascript 使用jquery获取bing web结果的Jsonp请求
以此为指导: 有人能帮我打jquery电话吗 我是真的为回调传递javascript代码,还是仅仅传递函数名Javascript 使用jquery获取bing web结果的Jsonp请求,javascript,jquery,json,jsonp,bing,Javascript,Jquery,Json,Jsonp,Bing,以此为指导: 有人能帮我打jquery电话吗 我是真的为回调传递javascript代码,还是仅仅传递函数名 BingSearch = function($bingUrl, $bingAppID, $keyword, $callBack) { $bingUrl = $bingUrl + "?JsonType=callback&JsonCallback=" + $callBack + "&Appid=" + $bingAppID
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!');
};
仍在获取“无效标签”错误。
jsonp:
需要设置为字符串(我认为它也可以省略),因为这只是用于接收jsonp的动态创建函数的名称
但是形式参数$callBack需要是对函数的引用,因此
function callback(result){ /*processResultHere*/ }
BingSearch(..,..,.., callback);
或
正如你所知,过度使用美元真的伤害了我的眼睛:)
此外,以大写字母开头的函数名应保留给“类”,因为许多语法检查器会抱怨在调用函数时,前面没有
new
。jsonp:
需要设置为字符串(我认为也可以省略它),因为这只是用于接收JSONP的动态创建函数的名称
但是形式参数$callBack需要是对函数的引用,因此
function callback(result){ /*processResultHere*/ }
BingSearch(..,..,.., callback);
或
正如你所知,过度使用美元真的伤害了我的眼睛:)
此外,以大写字母开头的函数名应该保留给“类”,因为许多语法检查器会抱怨在前面没有
new
的情况下调用大写字母的函数。要将do-jsonp与jQuery一起使用,请将JsonCallback=UserCallback
替换为JsonCallback=?
。然后,jQuery将像处理常规的$.ajax()
请求一样处理它
我建议您从开始使用Bing API开始,然后回到您准备将其与应用程序集成的时候
使用中的示例:
要将do jsonp与jQuery一起使用,请将
JsonCallback=UserCallback
替换为JsonCallback=?
。然后,jQuery将像处理常规的$.ajax()
请求一样处理它
我建议您从开始使用Bing API开始,然后回到您准备将其与应用程序集成的时候
使用中的示例:
Yes$callBack是对函数的引用(匿名函数,如您在第二段代码中介绍的)。仍然收到一个“无效标签”错误,它显示“无效标签”,从bing(firebug中)吐出json响应,但是您是否修改了
jsonp:
属性?在代码中,您将其设置为函数引用,而需要将其设置为字符串。如果您使用HttpFox或其他方法监视通信量,则您应该看到用于脚本请求的url的形式为http://....&callback=[namefrom jsonp]无效标签是与运行`eval({“prop”:“value”})相关的东西;因为{}被解释为块语句而不是对象文本。听起来jQuery在求值之前并没有将其包装在()中。是的$callBack是对函数的引用(匿名函数,就像您在第二个代码段中介绍的那样)。仍然收到一个“无效标签”错误,它显示“无效标签”,从bing(firebug中)吐出json响应,但是您是否修改了jsonp:
属性?在代码中,您将其设置为函数引用,而需要将其设置为字符串。如果您使用HttpFox或其他方法监视通信量,则您应该看到用于脚本请求的url的形式为http://....&callback=[namefrom jsonp]无效标签是与运行`eval({“prop”:“value”})相关的东西;因为{}被解释为块语句而不是对象文本。听起来jQuery在评估它之前并没有将它包装在()中。。
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); });