我对我们DOJO有一个要求。在进行单元测试时,我使用了一个简单的 *.json 文件,并且我正在制作一个简单的 xhr.get 或 request.get 调用,如代码所示。
但是,当我使用配置选项“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"]}