Jquery 循环中每个项目[编号]的json查询
我有两个循环: 一个用于计算页面中的对象,另一个用于为每个对象设置变量。 假设x是对象的数量,y是变量; 例如:Jquery 循环中每个项目[编号]的json查询,jquery,json,loops,Jquery,Json,Loops,我有两个循环: 一个用于计算页面中的对象,另一个用于为每个对象设置变量。 假设x是对象的数量,y是变量; 例如: 表示x=10;y=3循环应如下所示: x:y 1:1 2:2 [..] 8:2 9:3 10:1 对于每个对象,我都需要进行json查询。Json将以0/1回复,这意味着查询未成功, 如果响应失败,查询必须忽略y变量: 例如: $('button.#start').click(function(){ var
表示x=10;y=3
循环应如下所示:
x:y
1:1
2:2
[..]
8:2
9:3
10:1
对于每个对象,我都需要进行json查询。Json将以0/1回复,这意味着查询未成功,
如果响应失败,查询必须忽略y变量:
例如:
$('button.#start').click(function(){
var last = $('input.blue').length;
var totalpackages = '10';
var currentpackage;
for( currentpackage = '1'; currentpackage <= totalpackages; )
{// for each package;
var n;
for(n='1'; n <= last;)
{
//alert(currentpackage + ' : ' + n)
//n++
//currentpackage++
$.getJSON('api/testsenderfail.php',
function(data){
worklink = data.data;
if(worklink == '1')
{
alert(currentpackage + ' : ' + n + ' : ' + worklink)
n++
currentpackage++
}else{
alert(currentpackage + ' : ' + n + ' : ' + worklink)
n++
//currentpackage++
}
});
}
}
})
$('button.#start')。单击(函数(){
var last=$('input.blue').length;
var totalpackages='10';
无功电流包;
对于(currentpackage='1';currentpackageAJAX调用是异步的,这意味着回调方法将在您退出click事件处理程序后运行。您只需更改回调方法中的循环计数器,这只能在您完成循环后发生,并且只能在您更改循环后发生柜台
所以,你有一个永恒的循环。我已经找到了一个简单的方法。我会发布,以防其他人也遇到同样的情况
$('button.#start').click(
function(){
var X;
for(X='1'; X <= lastX;){
do_Y_vals(x, y) // here a loop to count X that will pass every X to another function
x++
y++
}
})
所以我需要为每个查询定义一个循环?我可以为x定义一个循环[我的案例],但我需要另一个依赖于json回复的循环…任何其他想法?或者…如果我使用对ajax的同步调用?抱歉,但我在这个领域是新手。然后我想另一个解决方案:按钮处理程序启动一个循环:x。我如何定义要在函数/按钮处理程序之外使用的变量?如果你想控制循环根据AJAX调用的结果,您必须使用同步调用,或者重新生成代码以使用状态而不是循环,这样,一个调用的回调将发送下一个调用的请求。后一个调用更可取,因为它不会冻结浏览器。我无法从问题中猜出用例。但您不能只发送一个请求吗将数据一次转换为一个脚本?是什么要求使您考虑这种循环类型
<?php
$rand = rand(0, 9);
if($rand == '0'){$work = '0';}else{$work = '1';}
$data = array('data' => $work);
echo json_encode($data);
?>
$('button.#start').click(
function(){
var X;
for(X='1'; X <= lastX;){
do_Y_vals(x, y) // here a loop to count X that will pass every X to another function
x++
y++
}
})
function do_y_vals(x){
$.getJSON(//variables here
function(data){
if(data.reply == '1'){
function do_y_vals(x, y)
y++
}
});
}