我向DOJO提出要求。在进行单元测试时,我使用的是一个简单的* .json文件,我正在编写一个简单的xhr.get或request.get调用,如代码所示。
然而,当我使用config选项" handleAs:' json'"
时,dojo / request无法解析它收到的json。以下是" roles.data.json"的内容。文件:
{roles:["Role - A", "Role - B", "Role - C", "Role - D", "Role - E"]}
这是不起作用的dojo代码
require([
'dojo/dom',
'dojo/on',
'dojo/ready',
'dojo/parser',
'dojo/request',
'dijit/registry',
'dijit/form/Form',
'dijit/form/TextBox',
'dijit/form/ValidationTextBox',
'dijit/form/ComboBox',
"dojo/domReady!"
], function (dom, on, ready, parser, request, registry) {
ready(function () {
console.log("ready");
request.get("http://localhost/dojofun/data/roles.data.json", {
//offending piece of code here, if I remove this, request works as string
handleAs :'json',
//headers : { 'mime-type': 'application/json' }
}).then (function (data) {
try {
console.log(data)
//var d = eval(data);
console.log(data.roles[0]);
}
catch (err) {
console.log(err);
}
});
});
});
这是可行的dojo代码。
require([
'dojo/dom',
'dojo/on',
'dojo/ready',
'dojo/parser',
'dojo/_base/xhr',
'dijit/registry',
'dijit/form/Form',
'dijit/form/TextBox',
'dijit/form/ValidationTextBox',
'dijit/form/ComboBox',
"dojo/domReady!"
], function (dom, on, ready, parser, xhr, registry) {
ready(function () {
console.log("ready");
xhr.get({
url:"http://localhost/dojofun/data/roles.data.json",
handleAs :'json',
load:function (data) {
try {
console.log(data)
console.log(data.roles[0]);
}
catch (err) {
console.log(err);
}
}
});
});
});
我的问题是,当我使用request.get时,我错过了什么?我必须进行额外的进口吗?
===============
确定!发现错误..这是愚蠢的,但你的JSON必须是双引号....单引号导致语法错误。正确的JSON现在看起来像这样:
{"roles":["Role - A", "Role - B", "Role - C", "Role - D", "Role - E"]}
答案 0 :(得分:0)
嗯,我有两个猜测:
Content-Type: application/json
header:除了在响应中将数据编码为JSON之外,还要设置 Content-Type标头到application / json,使用服务器 配置如Apache的AddType或将其添加到标头中 服务器端代码。
<小时/> 我想这是#1