Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON解析后无法读取未定义的属性_Javascript_Jquery_Json - Fatal编程技术网

Javascript JSON解析后无法读取未定义的属性

Javascript JSON解析后无法读取未定义的属性,javascript,jquery,json,Javascript,Jquery,Json,我在代码中完成了一个ajax请求,效果很好。之后,我只想提取必要的信息,并重新发布到另一个脚本。到目前为止,我的代码如下: $.ajax({ type: "POST", url: url, data: {xhr_id: xhr_id}, success: function (jsondata) { var product_data = [];

我在代码中完成了一个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"
        });
$.ajax({
类型:“POST”,
url:url,
数据:{xhr_id:xhr_id},
成功:函数(jsondata){
var乘积_数据=[];

对于(var i=0;i'product_description'of undefined“它意味着您正在尝试访问未定义变量的属性。这意味着“jsondata.products[i]“由于索引超出范围,导致出现未定义的值。在jsondata 3或4中返回了多少记录,请检查并调整for循环中的条件。$.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"
        });
$.ajax({
类型:“POST”,
url:url,
数据:{xhr_id:xhr_id},
成功:函数(jsondata){
小田变种;
试试{oData=jQuery.parseJSON(jsondata)}
捕捉(错误){
警报(“解析json字符串时出现问题:+jsondata”)
返回错误
}
var乘积_数据=[];

对于(var i=0;i
jsondata.products[i].product_description
-您有一个硬编码的循环长度,您的数据明显小于该长度。@Phylogenesis-OP已经这样做了。数组被声明并添加到
success
@tymeJV True中。我已经删除了不正确的注释。@tymeJV哦,天哪,这不是硬编码的循环(即使使用动态计数器,我也会遇到同样的错误),但是“=”操作符…真是个愚蠢的错误。谢谢你给我指明了那个方向。