我在jQuery中有一个哈希。它叫做dict。
要填充该哈希值,我调用createDict()函数,该函数将返回如下所示的内容,
{“12 | 345”=> “http://www.one.com”, “67 | 890”=> “http://www.two.com”}
var dict = createDict();
现在对于散列的每个元素,我执行“grabData”方法,这只是一个post请求,
$.each(dict, function( key, value ) {
data = key.split("|")[0];
var a = "";
//Calling the function that is a post request.
grabData(data,"/url",function(returned) {
alert(returned); //=> Positive
a = returned;
});
alert(returned); // => negative
alert(a); // => negative
});
//定义grabData
function grabData(input,url,callback){
$.post(url,input,function(data){
$("div#answer").html(data);
callback(data);
});
}
问题:
对于dict哈希中的每个元素,我执行一个组帖子 请求并获取返回值并更新 “分区#答案”。
我想在另一个数组或哈希中收集返回的值 运行另一个单一的post请求,其输入将是此数组或 散列。
注意:
第二个单发帖请求将更新数据库,所以我 不希望在第一组帖子请求期间发生这种情况。
答案 0 :(得分:1)
首先找到您要触发的请求总数(即dict
中的元素数)。这样您就可以为每个请求设置一个计数器并继续增加,并且在最终请求时,您可以收集数据并发出一个帖子请求。
var total = dict.length;
设置计数器
var counter = 0;
var returnedData = [];
然后运行你的每个循环
$.each(dict, function( key, value ) {
//your loop settings
...
//Calling the function that is a post request.
grabData(data,"/url",function(returned) {
alert(returned); //=> Positive
a = returned;
returnedData .push(returned);
counter++;
if(counter == total ){
//Collect the returned value, which will be in `returnedData` array.
//make post request with collected data
}
});
});
答案 1 :(得分:1)
您需要将运行POST的代码放入回调函数中,并检查每次回调函数运行时是否拥有所需的所有数据。类似的东西:
function grabData(input,url,callback){
var allDataSoFar = [];
$.post(url,input,function(data){
$("div#answer").html(data);
allDataSoFar.push(data);
if (haveGotAllDataYet(allDataSoFar){
$.post(...)
}
});
}