2

サイトに検索機能を提供するために、Yahoo BOSS と Bing API を使用しています。具体的には、JSON 応答形式を使用して、後で検索結果とともにコールバックされる検索プロバイダーにコールバック関数を渡します。私のコールバック関数は実際に呼び出されますが、問題は、一度に複数の要求を行うと、特定の応答がどの要求に対するものであるかがわからないことです。この目的のために、コールバック関数を使用して追加のパラメーターを検索プロバイダーに渡して、後でそれを使用して、どの応答がどの要求に対応するかを識別する方法はありますか? ありがとうございました

4

1 に答える 1

1

私はあなたと同じ問題を抱えています!私はグーグルでいくつかの解決策を見つけ、私の問題を解決しました。今私はあなたにそれを見せます、私はそれがあなたを助けることを願っています:)

以前のコード:

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

function GeocodeCallback(result) {.. 結果のコールバックを処理する --> ピン情報をここに追加したい}

各 sccipt がドキュメントに追加されると ( document.body.appendChild(script);) が実行されるため --> およびコールバックされるため、さらにパラメータを追加することはできません。

ajax 呼び出しが成功した場合、ajax を介してリクエストで解決します (これ以上ドキュメントに追加しません)。 --> GeocodeCallback(result, 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}
于 2012-01-11T09:10:54.697 に答える