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

时间:2016-01-05 10:49:58

标签: javascript jquery ajax request

是否可以通过Ajax请求将数据传递给没有全局变量的Callback函数?

例如这个请求函数应该通过回调函数传递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未定义。

2 个答案:

答案 0 :(得分:5)

在匿名函数中将调用包含在提供的回调中。试试这个:

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");

答案 1 :(得分:2)

我在下面的链接中找到了答案 - 可以使用更多模式来实现此目的 - 添加参考答案中的一些内容。

如果您在rssToTarget函数中创建closure,那么您想要使用的模式可能会有效:

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)时,元素参数存储在closure中,并返回回调函数,等待执行。

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