Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery获取bing web结果的Jsonp请求_Javascript_Jquery_Json_Jsonp_Bing - Fatal编程技术网

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

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

以此为指导:

有人能帮我打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!');
};

仍在获取“无效标签”错误。

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); });