【发布时间】:2015-02-25 11:12:48
【问题描述】:
上下文: 我有一个javascript文件,在我有一个AJAX函数调用一个php文件返回数据并使用它执行一个函数(一个sql查询返回一个设定日期的记录,然后使用google maps API将它绘制在地图上)。让我们将此数据称为 A
问题: 我需要的是能够获取第二天的数据并将其存储在一个数组中(我们称之为数据 B)并将其与第一组数据(数据 A)进行比较。 据我了解,我需要在这个调用中进行另一个 ajax 调用,我试过了,但似乎我无法获取数据,我可能对 ajax 的核心工作有误解。例如:
var data_a;
var data_b;
$.ajax({
type: "POST",
url: scriptday,
data: $("#dayForm").serialize(),
error: function( data ) {
console.log("Error: "+ data );
},
success: function( json ) {
data_a = json
//start of inner ajax call
$.ajax({
type: "POST",
url: scriptday2,
data: $("#dayForm").serialize(),
error: function( data ) {
console.log("Error: "+ data );
},
success: function( json ) {
data_b = json
// access data_a here
}
}
});
//end of inner ajax call
}
});
编辑: 这样做的正确方法是将内部 ajax 调用存储在一个包含 data_a 的函数中。
function innerAjax(data_a){
$.ajax({
.....
//data_a can now be used here
})
}
并在第一个 ajax 中调用它
innerAjax(data_a);
这种方式以同步方式使用 AJAX :) 感谢那些做出贡献的人!
【问题讨论】:
-
第二个 AJAX 调用传递的参数与第一个相同。你说需要获取第二天的数据,所以需要发送不同的
data:参数。 -
为什么不创建一个 AJAX 调用来返回您需要的所有数据,而不是进行多次调用?
-
我尝试通过在函数之前设置变量来访问 ajax 调用之外的数据,但是当我在下面打印出来时它是空的:/有什么想法吗?
-
不能一键获取数据吗?您正在使用 Json,因此您可以轻松返回两个不同的数据集。
{"data-a": {"data": {....}}, "data-b": {"data": {....}}}看起来像那样(这可能不对,但你明白了)。如果您确实需要 AJAX 调用,那么 Barmar 是对的。 -
你没有调用两个不同的脚本。两人都在打电话给
scriptday。
标签: javascript php sql ajax