1

奇妙な(おそらく賭けをする人にとってはそうではない)問題があります。すべてのajax呼び出しを呼び出すJavaScriptメソッドがあります。以下を参照してください。

function ajaxCall(url, params) {
if (params === null) {
    $.ajax({
        type: 'POST',
        url: url,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    }).success(function(response) {
        return response;
    }).error(function(response) {
        return response;
    });
} else {
    var data = JSON.stringify(params);
    $.ajax({
        type: 'POST',
        url: url,
        data: data,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json'
    }).success(function(response) {
        return response;
    }).error(function(response) {
        return response;
    });
  }
}

このメソッドを呼び出すと、AJAX呼び出しから適切な応答が得られ、すべてがバラ色に見えます。応答を返すまで、呼び出しは未定義で返されますか?

完全を期すために、コールコードを含めます。

var call = ajaxCall(someUrl, someParams);

私のとりとめのないものが理解されていることを明確にして確認するためだけに、上記の例では呼び出しは定義されていませんか?

4

2 に答える 2

1

ajax呼び出しはasync本質的にであり、dosentは何でも返します。だからあなたがこのようなことをするとき

var call = ajaxCall(someUrl, someParams);

次に、リクエストがサーバーに送信され、次の行が実行を開始します。呼び出し変数に値を入れずに;

また、このようなコード

.success(function(response) {
        return response;

.success()は、応答が成功したときに実行する関数またはコールバックを受け取るため、何もしません。したがって、uがこれに何かを返し、asyncフラグをに$.ajax() options入れた場合true。その後もnothing/undefined返されます。

于 2012-05-01T09:02:25.743 に答える
1

ajax呼び出しは非同期であるため、これを行うことはできません。 $。ajaxは遅延オブジェクトを返し、それを操作して、ここで読む
必要のあるものを取得できます。

于 2012-05-01T09:02:49.157 に答える