0

(1. 呼び出すことができるグローバル jQuery ajax 'helper' があると便利だと思いますajax(url,data,async)か?)

function ajax(ajax_url, ajax_data, ajax_async){
  ajax_async = typeof(ajax_async) != 'undefined' ? ajax_async : true;

  $.ajax({
    type: 'GET',
    url: ajax_url,
    data: ajax_data,
    async: ajax_async,
    dataType: 'text',
    success: function(response) {
        return response;
    },
    error: function(){

    }
  });
}

GET を配置して成功応答を返す関数を呼び出している場合。

alert(ajax('localhost/hello','',false);

私がそうalert(get_ajax())すると、「未定義」のアラートが表示されます..戻り値があったとしても

イベントループの問題が見られますが、私async:falseは ajax 呼び出しにいます。考え?

4

3 に答える 3

3

これは何百万回も尋ねられてきた質問の 1 つですが、検索するのはほとんど不可能です。とにかく問題は、ここから戻ってきたとき...

success: function(response) {
    return response;
}

...関数からではajax()なく、匿名success関数から戻っています。メイン関数から値を返すには、正しい関数から戻ることができるように、文字列を変数に保存する必要があります。

var val = '';

$.ajax({
    //       ....
    success: function(response) {
       val = response;
    },
    //       ....
});

return val;

これは、同期呼び出しを行っている場合にのみ機能することに注意してください。非同期呼び出しの場合は、コールバック関数を引数として与え、それを成功関数として使用することをお勧めします。

于 2011-11-11T08:05:20.700 に答える
1

同期呼び出しの場合、私はあなたがするだろうと信じています

var data;
$.ajax({
    ...
    async: false,
    success: function(response) {
        data = response;
    }
});
return data;
于 2011-11-11T08:06:29.160 に答える
0

あなたのajax関数は呼び出しをラップし、$.ajax何も返しません。それが のundefined由来です。例で値を取得するにalertは、関数の最後に return ステートメントを追加する必要があります。

応答でアラートを取得するには、次のようにする必要があります。

success: function(response) {
    alert(response);
},
于 2011-11-11T08:02:03.873 に答える