我正在尝试从JSON数组对象中提取一些值,但是我收到了该错误消息。
var i = 0;
while (i < n) {
$.get("counter.html").done(function (data2) {
var $html = $("<div>").html(data2);
var str = json.affiliates[i];
$html.find("#coupon").html(str.affiliate_name);
$html.find("#coupon_id").html(str.affiliate_id);
$(".col-sm-4").append($html);
});
i++;
}
这是我的json:
{
"affiliates": [
{
"affiliate_name": "a1",
"affiliate_id": "0"
},
{
"affiliate_name": "a2",
"affiliate_id": "0"
},
{
"affiliate_name": "a3",
"affiliate_id": "0"
}
],
"status": "success"
}
答案 0 :(得分:0)
而不是while
循环触发大量请求而没有保证完成订单甚至完成 - 等到完成后,递增你的计数器,如果需要 - 再次打电话:
ajax(0);
function ajax(i) {
$.get("counter.html").done(function(data2) {
var $html = $("<div>").html(data2);
var str = json.affiliates[i];
$html.find("#coupon").html(str.affiliate_name);
$html.find("#coupon_id").html(str.affiliate_id);
$(".col-sm-4").append($html);
if (i < n) ajax(++i)
});
}
答案 1 :(得分:0)
我认为这可行:
var i=0;
while(i<n){
(function(j) {
$.get("counter.html").done(function (data2) {
var $html = $("<div>").html(data2);
var str = json.affiliates[j];
$html.find("#coupon").html(str.affiliate_name);
$html.find("#coupon_id").html(str.affiliate_id);
$(".col-sm-4").append($html);
});
})(i);
i++;
}
答案 2 :(得分:0)
我没有被正确考虑。使用闭包:
var i = 0;
while (i < n)
{
(function (index) { // outer closure to factor "i"
$.get("counter.html").done(
function(response_data) {
var $html = $("<div>").html(response_data);
var str = json.affiliates[index];
$html.find("#coupon").html(str.affiliate_name);
$html.find("#coupon_id").html(str.affiliate_id);
$(".col-sm-4").append($html);
}
);
}(i)); // closure
i++;
}
答案 3 :(得分:0)
请在此处指明 json 是什么,根据我的说法,如果将while循环的内容封装在像
这样的函数中会更好(function(i){
$.get("counter.html").done(function(data2) {
var $html = $("<div>").html(data2);
var str = json.affiliates[i];
$html.find("#coupon").html(str.affiliate_name);
$html.find("#coupon_id").html(str.affiliate_id);
$(".col-sm-4").append($html);
});
i++;
})(i)
因为调用本质上是异步的,并且可能产生混乱的输出。