Jquery 从另一个Ajax访问Ajax数据
我试图访问第一个ajax数据以添加新值(选项2)。我可以使用beforesend函数中的this.data访问第一个ajax数据,但我不能在另一个ajax中使用“this”,因为它引用了它。那么,如何访问第一个ajax数据呢Jquery 从另一个Ajax访问Ajax数据,jquery,ajax,Jquery,Ajax,我试图访问第一个ajax数据以添加新值(选项2)。我可以使用beforesend函数中的this.data访问第一个ajax数据,但我不能在另一个ajax中使用“this”,因为它引用了它。那么,如何访问第一个ajax数据呢 $.ajax({ type: "POST", url: "controller.php", data: { 'option1': 1 //option2 needs to be accessible here
$.ajax({
type: "POST",
url: "controller.php",
data: {
'option1': 1
//option2 needs to be accessible here
},
beforeSend: function (jqXHR) {
var firstAjax = this;
$.ajax({
type: "post",
url: "controller.php",
data: {
getNewOption: 1
},
success: function (res) {
firstAjax.data += '&' + $.param({
option2: res
});
}
});
},
success: function (msg) {
//...
}
});
如果我理解正确,您需要
res
成为第一个ajax调用中使用的数据的一部分,因为data
是一个对象,请尝试将res分配给。选项2
让我知道
$.ajax({
type: "POST",
url: "controller.php",
data: {
'option1': 1
//option2 needs to be accessible here
},
beforeSend: function (jqXHR) {
var firstAjax = this;
$.ajax({
type: "post",
url: "controller.php",
data: {
getNewOption: 1
},
success: function (res) {
firstAjax.data.option2 = res
}
});
},
success: function (msg) {
//...
}
});
编辑
正如所述,第二个ajax调用确实在第一个数据提交到服务器之前运行,但是第二个结果是异步的,在第一个数据发送之前没有返回,因此第一个数据没有离开选项2
集。考虑这个解决方案改变Ajax调用的顺序:
$.ajax({
type: "post",
url: "controller2.php",
data: {
getNewOption: 1
},
success: function (res) {
$.ajax({
type: "POST",
url: "controller1.php",
data: {
'option1': 1
'option2': res
},
success: function (msg) {
//...
}
});
},
beforeSend: function (jqXHR){}
});
这是否可行?是
firstAjax。数据
不是您想要的吗?我尝试过,但无法传递。您想要访问什么,确切时间是什么?您的ajax调用是反向的。您需要将ajax-2的结果作为ajax-1参数的一部分。重写它,以便在ajax-2的success
部分调用ajax-1。问题是您的beforeSend
在ajax-2完成之前结束。这意味着ajax-1在ajax-2完成之前启动,这就是为什么您无法获得所需的信息。您正在尝试链接ajax调用,但无法在发送之前以的方式进行链接。正确的方法是将第二个函数放入第一个函数的success
中。这不起作用的原因是beforeSend
函数实际上会在ajax完成之前完成,这就是OP遇到问题的原因。唯一可行的方法是,如果内部ajax是同步的,这是一个非常糟糕的主意。