通过ajax请求将数据传递给回调函数

pass data through a ajax request to a callback function

本文关键字:回调 函数 数据 ajax 请求 通过      更新时间:2023-09-26

是否可以在没有全局变量的情况下通过Ajax请求将数据传递给回调函数?

例如,这个请求函数应该通过回调函数传递passData,回调函数也应该获得正常的响应数据?!

function rquest(callback, passData){
    $.ajax({
         type: "POST",
         url: someURL,
         success: callback(passData)
    });
};  
function myCallback(data, passData){
    var responseData = data;
    var SomeOtherData = passData
    //do Something
};
rquest(myCallback, "Hello World");

所以"Hello World"应该在passData中,数据应该是来自服务器的正常响应。。。如果我这样做,数据是"Hello World",passData是未定义的。

在匿名函数中包装对所提供回调的调用。试试这个:

function rquest(callback, passData){
    $.ajax({
         type: "POST",
         url: someURL,
         success: function(data) { 
             callback(data, passData)
         }
    });
};  
function myCallback(data, passData) {
    var responseData = data;
    var SomeOtherData = passData
    //do Something
};
rquest(myCallback, "Hello World");

我在下面的链接中找到了答案-还有更多的模式可以实现这一点-添加参考答案中的一些内容。

如果您在rssToTarget函数中创建一个闭包,那么您想要使用的模式可能会起作用:

function rssToTarget(element) {
  return function (xmlData) {
    // work with element and the data returned from the server
  }
}
function doSomething(url, elem) {
    $.ajax({ type: "GET",
         url: url,
         dataType: "xml",
         success: rssToTarget(elem)
       });
}

执行rssToTarget(elem)时,元素参数存储在闭包中,并返回回调函数,等待执行。

参考链接https://stackoverflow.com/a/1194187/3082706