我对我们的道场有要求。在进行单元测试时,我使用的是一个简单的*.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"]}发布于 2012-11-04 17:02:43
嗯,我有两个猜测:
除了在响应中将数据编码为JSON之外,还可以使用服务器配置(如Apache的AddType )或使用服务器端代码将其添加到报头中,将内容类型标头设置为application/json。
我想是第一次
https://stackoverflow.com/questions/13213364
复制相似问题