我有一个例子json结果:
{"Products": [{"ProductIndex": "1", "ProductCode": "116001", "ProductPrice": "$517.00"},{"ProductIndex": "2", "ProductCode": "37732", "ProductPrice": "$288.00"}],"Totals": [{"CartTotal": "$805.00", "Quantity": "2", "DiscountTotal": "0", "LastProduct": "0"}]}
我有这个jQuery:
jQuery(function(){
jQuery.ajax({
url: '/AjaxCart.asp',
cache: false,
dataType: 'text',
success: function(data) {
var json = eval('(' + data + ')');
var quantity;
var cartTotal;
var screenId;
quantity = json.Totals[0].Quantity;
cartTotal = json.Totals[0].CartTotal;
screenId = json.Products[0].ProductCode;
$("#content_area").prepend(screenId);
},
error: function() {
return false;
}
});
});
它可以工作,但是screenid只是拉取ProductCode的第一个值。我需要它遍历整个结果并显示两个ProductCode值。我已经尝试将.each函数放在不同的东西上但没有结果。有什么帮助吗?
我认为我很接近这一点,但它仍然无效:
pIndex = json.Products[0];
for(var i = pIndex.length; i--;) {
screenItem = pIndex[i];
$("#content_area.").prepend(screenItem.ProductCode)
答案 0 :(得分:2)
我认为您需要将pIndex = json.Products[0];
更改为pIndex = json.Products;
,此时您尝试循环遍历单个对象,即Products
数组的第一个元素。
pIndex = json.Products;
for(var i = 0; i < pIndex.length; i++) {
screenItem = pIndex[i];
var $span = $('<span />').text(screenItem.ProductCode);
$("#content_area.").append($span);
}
答案 1 :(得分:0)
如果你总是从你的ajax调用返回json,最好将你的ajax dataType属性设置为“json”,这样你就不需要自己解析文本了(使用eval方法或parseJSON)方法)。此外,jQuery.each函数优于标准的javascript for循环。
我会写这样的代码:
jQuery(function(){
jQuery.ajax({
url: '/AjaxCart.asp',
cache: false,
dataType: 'json',
success: function(data) {
jQuery.each(data.Products, function(index, element) {
$("#content_area").prepend(element.ProductCode);
});
},
error: function() {
return false;
}
});
});