我在我的代码中做了一个ajax请求,它运行良好。之后我想只提取必要的信息并将其重新发布到另一个脚本。到目前为止,这是我的代码:
$.ajax({
type: "POST",
url: url,
data: {xhr_id: xhr_id},
success: function (jsondata) {
var product_data = [];
for (var i = 0; i <= 3; i++) {
//alert(jsondata.products[i].product_description.toSource());
product_data[i] = {};
product_data[i]["product" + i] = jsondata.products[i].product_description;
//alert(product_data[i]["product" + i].toSource());
}
},
dataType: "json"
});
问题是两个警报都正常工作,显示我想要的信息。但是,我收到错误消息&#34; Uncaught TypeError:无法读取属性&#39; product_description&#39;未定义&#34;这打破了脚本并阻止我做任何其他事情。我做错了什么,有什么想法吗?
答案 0 :(得分:1)
&#39; PRODUCT_DESCRIPTION&#39;未定义&#34;这意味着你正试图访问未定义变量的属性。这意味着&#34; jsondata.products [i]&#34;导致由于索引超出范围而发生的未定义值。在jsondata 3或4中返回多少记录,检查并调整for循环中的条件
答案 1 :(得分:0)
$ .ajax的success()函数中的参数是一个字符串。你必须通过一个解析函数来制作json。请参阅下面修改但未经过测试的代码。
$.ajax({
type: "POST",
url: url,
data: {xhr_id: xhr_id},
success: function (jsondata) {
var oData;
try { oData=jQuery.parseJSON(jsondata) }
catch(err) {
alert("Problem parsing json string : " + jsondata)
return false
}
var product_data = [];
for (var i = 0; i <= 3; i++) {
//alert(oData.products[i].product_description.toSource());
product_data[i] = {};
product_data[i]["product" + i] = oData.products[i].product_description;
//alert(product_data[i]["product" + i].toSource());
}
},
dataType: "json"
});