私たち DOJO に要件があります。単体テスト中、私は単純な *.json ファイルを使用しており、コードに示されているように単純な xhr.get または request.get 呼び出しを行っています。
ただし、dojo/request は、構成オプション「handleAs:'json'」を使用すると、受け取った json の解析に失敗します。
「roles.data.json」ファイルの内容は次のとおりです。
{roles:["Role - A", "Role - B", "Role - C", "Role - D", "Role - E"]}
動かない道場のコードはこちら
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);
}
});
});
});
これが機能する道場のコードです。
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 を使用しているとき、何が欠けているのでしょうか? 必要な追加のインポートはありますか?
===============
Ok!エラーが見つかりました..これはばかげていますが、JSON は二重引用符で囲む必要があります....単一引用符は構文エラーを引き起こします。正しい JSON は次のようになります。
{"roles":["Role - A", "Role - B", "Role - C", "Role - D", "Role - E"]}