JSON未定义时不会被解析,并且意外的标记时解析

问题描述:

有问题,让我的JSON响应回从SQL查询中的JavaScriptJSON未定义时不会被解析,并且意外的标记时解析

这是我的javascript

setNouvelle: function(id, action){ 
     this 
    .$http 
    .get('news.api.php?function=getNouvelle&id='+id) 
    .then(function(response){ 
     if (action == 'modal') { 
     this.modal.nouvelle = response.data; 
     } else if(action == 'edit') { 
     this.nouvelle = response.data; 
     this.nouvelle.publication = 
     moment(this.nouvelle.publication).format('YYYY-MM-DD'); 
     } 
    }); 
}, 

在PHP端我有一个PostgreSQL的查询使用json_build_object,然后我发送它

echo json_encode($ nouvelle);

当启动动作setNouvelle,所述response.data包含以下内容:

"{"id" : 1872, "title" : "Test Title", "publication" : "2017-09-05T00:00:00", "summary" : "This is a test summary ", "category" : "admin", "content" : "<h2 style=\"text-align: justify;\">This is the test content ", "relateddisciplines" : [{"id" : 2, "name" : "Men's", "code" : "men"}, {"id" : 3, "name" : "Women's", "code" : "wen"}], "athlete" : [{"id" : 37359, "firstname" : "Reb", "lastname" : "ANDRADE", "federation" : "POR"}, {"id" : 25224, "firstname" : "Paul", "lastname" : "BULA", "federation" : "FRA"}], "events" : [{"id" : 15191, "startevent" : "2017-09-01", "endevent" : "2017-09-03", "title" : "World Cup", "city" : {"name" : "Minsk", "country" : {"code" : "BLR"}}, "status" : "approved", "hasresults" : true, "disciplines" : [{"code" : "men"}, {"code" : "wen"}]}], "keywords" : [{"id" : 40, "value" : "Women's"}, {"id" : 49, "value" : "Men's"}, {"id" : 347, "value" : "World Cup"}, {"id" : 771, "value" : "Minsk"}]}" 

但是我不能使用返回的数据的各个部分,例如,显示与this.nouvelle.summary

摘要

如果我尝试JSON.parse(response.data),我收到以下错误信息:

未捕获的(以诺)语法错误:意外的标记?在JSON在位置1

我如何设置这让我可以使用JSON响应的各个属性

感谢

编辑:

这是我的应用程序声明:

var app = new Vue({ 
http: { options: { emulateJSON: true, emulateHTTP: true }}, 
el: '#app', 
data: { 
nouvelle: { 
    id : "", 
    title: "", 
    summary: "", 
    content: "", 
    category: "", 
    publication: "", 
    press_release: "", 
    keywords: [], 
    athletes: [], 
    events: [], 
    relateddisciplines: [], 
    create_time: "" 
}, 
nouvelles: [], 
modal: { 
    nouvelle: { 
    id : "", 
    title: "", 
    summary: "", 
    content: "", 
    category: "", 
    publication: "", 
    press_release: "", 
    keywords: [], 
    athletes: [], 
    events: [], 
    relateddisciplines: [], 
    create_time: "" 
}}, 
file: {}, 
addMode: true, 
alert: { 
    cls: "hidden", 
    message: "", 
    time: 0 
} 
+0

其Javascript库您使用? – Calimero

+0

这是不是有效的JSON [JSON验证](https://jsonlint.com/) –

+0

我正在使用Vue.js – wzirmer

使工作通过改变这一行:

this.modal.nouvelle = response.data; 

this.modal.nouvelle = JSON.parse(response.body.nouvelle); 

没有解析正确的事