9

スクリプト内の複数の関数から呼び出すことができる単純な汎用 ajax 関数を作成しました。ajax 関数に返されたデータを呼び出し元に戻す方法がわかりません。

// some function that needs ajax data
function myFunction(invoice) {
    // pass the invoice data to the ajax function
    var result = doAjaxRequest(invoice, 'invoice');
    console.dir(result); // this shows `undefined`
}

// build generic ajax request object
function doAjaxRequest(data, task) {
    var myurl = 'http://someurl';
    $.ajax({
        url: myurl + '?task=' + task,
        data: data,
        type: 'POST',
        success: function(data) {
            console.dir(data); // this shows good data as expected  
            return data; // this never gets back to the calling function
        }
    });
}

呼び出し元の関数に ajax データを返す方法はありますか?

4

2 に答える 2

15

$.ajaxは非同期であるため、データを取得するには、doAjaxRequest関数にコールバックを渡す必要があります。応答を処理するコードdoAjaxRequestの結果を使用する代わりに、コールバック関数にコールバック パラメータを追加しました。doAjaxRequest

// some function that needs ajax data
function myFunction(invoice) {
    // pass the invoice data to the ajax function
    doAjaxRequest(invoice, 'invoice', function (result) { 
        console.dir(result);
    });
}

// build generic ajax request object
function doAjaxRequest(data, task, callback) {
    var myurl = 'http://someurl';
    $.ajax({
        url: myurl + '?task=' + task,
        data: data,
        type: 'POST',
        success: function(data) {
            console.dir(data); // this shows good data as expected  
            callback(data);
        }
    });
}
于 2012-10-10T22:48:11.177 に答える
-1

この例はあなたに完全に役立つと思います

function testAjax() {
    var result="";
    $.ajax({
      url:"getvalue.php",
      async: false,  
      success:function(data) {
         result = data; 
      }
   });
   return result;
}

function fun2()
{

alert(testajax())

}

async の 1 つに気付きました: false

于 2014-05-26T13:39:58.607 に答える