jQuery ajax--将数据返回给调用函数

时间:2012-10-10 22:43:19

标签: javascript jquery

我编写了一个简单的通用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数据返回给调用函数?

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:-1)

我认为这个例子对你有充分的帮助

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

function fun2()
{

alert(testajax())

}

你注意到一件事async:false