Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQueryAjax——将数据返回到调用函数_Javascript_Jquery - Fatal编程技术网

Javascript jQueryAjax——将数据返回到调用函数

Javascript jQueryAjax——将数据返回到调用函数,javascript,jquery,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(res

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

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

我认为这个例子对你完全有帮助

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

function fun2()
{

alert(testajax())

}

您注意到一件异步的事情:false

否。在AJAX调用启动之前,调用函数已经运行完毕。你可以让它同步。。。但是这不是AJAX。他不能将一个(可能是匿名的)回调函数传递给
doAjaxRequest
函数,然后从成功闭包调用它吗?@TheZ--废话--现在很明显了。谢谢你帮我提了个愚蠢的问题@KevinBoucher他可以,但这不会将其作为返回传递回调用函数。这将是一个回调。@Z:同意,但这可能是解决他整个问题的一个办法。