【问题标题】:Uncaught SyntaxError: Unexpected token p in JSON at position 36未捕获的 SyntaxError:JSON 中第 36 位的意外标记 p
【发布时间】:2016-10-22 07:24:21
【问题描述】:

我正在使用共享点填充网页,所以我使用 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 位是不显示的项目。知道这里有什么问题吗?问候

这些工作

这行不通

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

如果我评论这一行:

 //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);

我得到了这样的东西:

【问题讨论】:

标签: javascript c# json ajax sharepoint-2013


【解决方案1】:

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

JSON.parse(items[item].Specifications)

确保项目在项目索引中具有价值,并且项目[项目] 具有属性规范。

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

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

更新

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

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

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

错误的原因是 JSON.parse() 需要一个字符串值,而 items[item].Especificaciones 是一个数组

【讨论】:

  • 如何检查它是否为空?
  • 可以在JSON.parse之前检查是否为null。
  • 如果我只评论行obj = JSON.parse(items[item].Especificaciones); 它运行正确,我如何验证它运行它?因为我没有发现任何问题
  • 尝试对对象进行字符串化。 JSON.stringify(items[item].Especificaciones);错误的原因是 JSON.parse() 需要一个字符串值和 items[item].Especificaciones 是一个数组
  • 我做了,但我只收到每个关键字的数字,我将其上传到问题
【解决方案2】:

"Eslora":100 pies"

开始编写字符串值时应该打开引号

【讨论】:

  • 查看下方。您已经发布了几个实例,其中一个是我发布的。我没有写下来,这是从您发布的文本中复制/粘贴的。
猜你喜欢
  • 2018-08-30
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2023-03-05
  • 2017-08-21
相关资源
最近更新 更多