未捕获的SyntaxError:位置36的JSON中出现意外的标记p

时间:2016-06-20 22:14:05

标签: javascript c# json ajax sharepoint-2013

我使用sharepoint填充网页,所以我做一个json来获取像这样的ajax数据:

function completeFleet(data, target, eng) {
var items = data.d.results;
console.log(items);
var prefix = "<div class='row'>";
var sufix = "</div>";
var menu = "<div class='col-md-4'>";
var cat = "";
var spec = "";
var counter = 0;
var obj = null;
for (item in items) {
    spec = "";
    if (counter == 1) {

        menu += "</div><div class='col-md-4'>";
        counter = 0;
    }
    if (eng) {
        obj = JSON.parse(items[item].Specifications);
        for (var key in obj) {
            spec += "<div class='row'><div class='col-md-12 ftBottomSeparator'><span class=' t10'>" + key + "</span>&nbsp;<span class='t06' style='float:right;'>" + obj[key] + "</span></div></div>";
        }
        menu += "<div class='row ftContainerOut'><div class='col-md-12 ftContainer'><div class='row ftHeader'><div class='col-xs-9 t09'>" + items[item].Title + "</div><div class='col-xs-3 text-right'></div></div><div class='row'><div class='col-md-6' style='padding-top:10px'><img src='" + items[item].Imagen.Url + "' class='img-responsive img-center' style='border:0px solid blue; max-width:150px;max-height:120px;' /></div><div class='col-md-6'>" + spec + "</div></div></div></div>";
    } else {
        obj = JSON.parse(items[item].Especificaciones);
        for (var key in obj) {
            spec += "<div class='row'><div class='col-md-12 ftBottomSeparator'><span class=' t10'>" + key + "</span>&nbsp;<span class='t06'  style='float:right;'>" + obj[key] + "</span></div></div>";
        }

        menu += "<div class='row ftContainerOut'><div class='col-md-12 ftContainer'><div class='row ftHeader'><div class='col-xs-9 t09'>" + items[item].Title + "</div><div class='col-xs-3 text-right'></div></div><div class='row'><div class='col-md-6' style='padding-top:10px'><img src='" + items[item].Imagen.Url + "' class='img-responsive img-center' style='border:0px solid blue; max-width:150px;max-height:120px;' /></div><div class='col-md-6'>" + spec + "</div></div></div></div>";
    }
    counter++;
}
$(target).html("<div class='panel-body'><div class='container-fluid'>" + prefix + menu + sufix + "</div></div>");

}

我有5个不同的对象,但其中一个不显示数据,我的网页是英文和西班牙文,英文版它收取所有数据,但西班牙语中的一个 不起作用,我在第36位得到错误,第36位是项目不显示。知道这里有什么问题吗?此致

Error image

这一个有效 Works

这没有用

noworks

---------更新------------

如果我评论这一行:

 //obj = JSON.parse(items[item].Especificaciones);

并放

 if(items[item].Especificaciones){
 JSON.parse(items[item].Especificaciones);
   }

它现在以图像运行,但现在我没有“Especificaciones”列表

现在我使用

var stringifyObj = JSON.stringify(items[item].Especificaciones); 
var obj = JSON.parse(stringifyObj);

我得到类似的东西:

Keyword

2 个答案:

答案 0 :(得分:2)

确保JSON.parse中相应键的值不为null。例如 -

if(items[item].Specifications){
  JSON.parse(items[item].Specifications)
}

确保项目在项目索引中具有值,而项目[item]具有属性规范。

您可以在JSON.parse之前检查项目[item] .Specifications是否为空。

var stringifyObj = JSON.stringify(items[item].Especificaciones); 
var obj = JSON.parse(stringifyObj);

<强>更新

JSON.parse()用于将包含JSON表示法的字符串转换为Javascript对象。要成为有效的JSON,字符串必须是双引号。

尝试对对象进行字符串化,然后再次解析。

//angular-cli.build.js
module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      // ...
      '@angular2-material/**/*.+(js|js.map)'
      'angular2-localstorage/**/*.+(js|js.map)'
    ]
  });
};

错误的原因是JSON.parse()需要String值和items [item] .Especificaciones是一个数组

答案 1 :(得分:1)

"Eslora":100 pies"

当您开始编写字符串值

时,您应该打开引号