如何通过回调函数传递参数来搜索Yahoo BOSS和BING等API?

时间:2011-02-17 14:59:40

标签: bing-api yahoo-boss-api

我正在使用Yahoo BOSS和Bing API为我的网站提供搜索功能。具体来说,我使用他们的JSON响应格式,我将回调函数传递给搜索提供程序,稍后将使用搜索结果回调。我的回调函数实际上被调用,但问题是,如果我一次发出多个请求,我无法确定某个响应是针对哪个请求。为此,有没有办法将带有回调函数的附加参数传递给搜索提供程序,以便我以后可以使用它来识别哪个响应与哪个请求有关? 谢谢

1 个答案:

答案 0 :(得分:1)

我和你有同样的问题!我用Google搜索并找到了一些解决方案 我已经解决了我的问题。现在我告诉你,我希望它可以帮助你:)。

上一个代码:

       function MakeGeocodeRequest(credentials) {
        var pins = checkLocation.d
        $.each(pins, function (index, pin) {
            var geocodeRequest = 'http://ecn.dev.virtualearth.net/REST/v1/Locations/' + pin.City + ',' + pin.Country + '?output=json&jsonp=GeocodeCallback&key=' + credentials;
            CallRestService(geocodeRequest);
        });



    function CallRestService(request) {
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", request);
        document.body.appendChild(script);
    }

函数GeocodeCallback(result){..与结果回调相关, - >我想在这里添加一些引脚信息}

因为每个sccipt在添加到document(document.body.appendChild(script);)时都会运行 - >和回调,你不能添加更多的参数。

我通过ajax请求解决它(不再添加到文档中),当ajax调用成功时 - >我调用了GeocodeCallback(结果, pin ) 这是完整的代码。

   function MakeGeocodeRequest(credentials) {
        var pins = checkLocation.d;
        $.each(pins, function (index, pin) {
            $.ajax({
                url:"http://ecn.dev.virtualearth.net/REST/v1/Locations/",
                dataType: "jsonp",
                data:{key:credentials,q:pin.City + ',' + pin.Country},
                jsonp:"jsonp",
                success: function(result){
                    GeocodeCallback(result,pin);
                }
            });
        });
    }
    function GeocodeCallback(result,pin) { ... to do here}