读取 Aurelia.io 示例中的 json 时出错
Error during reading json in Aurelia.io example
我正在通过添加自定义模块来扩展 aurelia 的 get started app。
我在读取 json 时遇到错误 "Uncaught SyntaxError: Unexpected token :"。但是 json 验证器没有发现任何错误。
这是我的json
{
"news": [
{
"title": "Lorem Ipsum is simply dummy text",
"type": "news",
"tags": [
"news",
"fish",
"loremipsumdolor"
],
"text": "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
},
{
"title": "Lorem Ipsum",
"type": "news",
"tags": [
"news",
"fish"
],
"text": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."
}
]
}
这是我的模块,它试图加载 json(基本上它是 flickr.js 的复制粘贴,可以在示例代码中找到)
`
从 'aurelia-framework' 导入 {注入};
从 'aurelia-http-client' 导入 {HttpClient};
@inject(HttpClient)
export class News{
heading = 'News';
items = [];
url = '/res/data.json';
constructor(http){
this.http = http;
}
activate(){
debugger;
return this.http.jsonp(this.url).then(response => {
this.items = response.content.news;
});
}
canDeactivate(){
return confirm('Are you sure you want to leave?');
}
}
'
执行示例代码时,它会从 flikr 加载 json 并将其包装在 jsonp_callback_92661() 中。这是唯一的区别。这可能是我问题的根源吗?
是的,这就是问题的根源。当你真的不需要它时,你正在使用 jsonp
。由于您自己提供静态 json 文件,并且可能在主应用所在的同一域中提供服务,因此您不需要使用 jsonp。如果您还不熟悉,Good explanations about jsonp 就在 SO 中(闪烁将响应包装在函数调用中,因为 jsonp 需要它才能工作)。
您应该可以使用 get
:
return this.http.get(this.url).then(response => {
//not sure if response.content is an object already.
//you may need to JSON.parse response.content
this.items = response.content.news;
});
我正在通过添加自定义模块来扩展 aurelia 的 get started app。 我在读取 json 时遇到错误 "Uncaught SyntaxError: Unexpected token :"。但是 json 验证器没有发现任何错误。
这是我的json
{
"news": [
{
"title": "Lorem Ipsum is simply dummy text",
"type": "news",
"tags": [
"news",
"fish",
"loremipsumdolor"
],
"text": "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
},
{
"title": "Lorem Ipsum",
"type": "news",
"tags": [
"news",
"fish"
],
"text": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."
}
]
}
这是我的模块,它试图加载 json(基本上它是 flickr.js 的复制粘贴,可以在示例代码中找到) ` 从 'aurelia-framework' 导入 {注入}; 从 'aurelia-http-client' 导入 {HttpClient};
@inject(HttpClient)
export class News{
heading = 'News';
items = [];
url = '/res/data.json';
constructor(http){
this.http = http;
}
activate(){
debugger;
return this.http.jsonp(this.url).then(response => {
this.items = response.content.news;
});
}
canDeactivate(){
return confirm('Are you sure you want to leave?');
}
}
' 执行示例代码时,它会从 flikr 加载 json 并将其包装在 jsonp_callback_92661() 中。这是唯一的区别。这可能是我问题的根源吗?
是的,这就是问题的根源。当你真的不需要它时,你正在使用 jsonp
。由于您自己提供静态 json 文件,并且可能在主应用所在的同一域中提供服务,因此您不需要使用 jsonp。如果您还不熟悉,Good explanations about jsonp 就在 SO 中(闪烁将响应包装在函数调用中,因为 jsonp 需要它才能工作)。
您应该可以使用 get
:
return this.http.get(this.url).then(response => {
//not sure if response.content is an object already.
//you may need to JSON.parse response.content
this.items = response.content.news;
});