0

こんにちは、ajax 応答処理に問題があります

ajax呼び出しを行い、json応答を返すだけのグローバル関数呼び出し()があります:

function call(request_url,params) {
    $.post(request_url,params,function(response) {
        return response;
    },'json');
}

その後、グローバル関数call()を使用するオブジェクト GetServices があります

    var GetServices = {
      service_url:"http://xxx.com/req.php",

      getCurrency:function() {
            var resp = call(this.service_url,{act:'getCurrency'});
            return resp;
      }
    }

GetServices.getCurrency()に ajax レスポンスを返してもらいたいのですが、undefined が返されます。Javascriptは未定義の値を割り当て、その後 ajax 呼び出しを終了します。

これを修正する方法を教えてください。

4

2 に答える 2

0

resp変数が設定されている間も呼び出しが実行されているため、このパターンは機能しません。したがって、resp常に。になりますnull

別の方法は、デリゲート関数を関数に渡して成功時callに実行するか、を同期呼び出しに変更することです。$.post$.post$.ajax

于 2012-09-04T08:01:50.743 に答える
0

その非同期呼び出し...したがって、呼び出しを行い、処理を再開します。電話をかけた後、どこかで値を取得します。それは様々な要因に依存します。たとえば、サーバーの応答時間。

最も簡単な方法は、の成功ハンドラーからターゲット関数(このajax値を渡す関数)を呼び出すことです。$.post()

例えば

function call(request_url,params) {
    $.post(request_url,params,function(response) {
        yourTargetFunction(response); // instead of returning the value from this
    },'json');
}
于 2012-09-04T08:03:10.630 に答える