0

DojoコンボボックスのドロップダウンにJSONの値を入力しています。以下のコードは問題なく機能します(インラインJSON)....。

<script>
var magicvars = {
   identifier: 'name',
   label: 'name',
   items: [
   {name: "ZCCN_NO_1", label: "<img width='16px' height='16px' src='http://localhost:3000/static/images/eight_ball_16x16.png'/>ACCN_NO_1"},
   {name: "CR_Local_ID", label:"<img width='16px' height='16px' src='http://localhost:3000/static/images/eight_ball_16x16.png'/>CR_Local_ID"}
]};
</script>

<div dojoType="dojo.data.ItemFileReadStore" data="magicvars" jsId="xvarStore2"></div>

ただし、JSONの外部ファイルを指定すると、ドロップダウンが表示されます。外部ファイルはstandard.txtで、次のようになります...

{
  identifier: 'name',
  label: 'name',
  items: [
  {name: "ZCCN_NO_1", label: "<img width='16px' height='16px' src='http://localhost:3000/static/images/eight_ball_16x16.png'/>ACCN_NO_1"},
  {name: "CR_Local_ID", label:"<img width='16px' height='16px' src='http://localhost:3000/static/images/eight_ball_16x16.png'/>CR_Local_ID"}
 ]};

dojoへの私のHTML呼び出しは次のようになります。

<div dojoType="dojo.data.ItemFileReadStore" jsId="xvarStore2" url="http://localhost:3000/static/standard.txt">
</div>

インラインは正常に機能しますが、外部呼び出しは機能しません。これが修正の質問である場合はお詫びしますが、外部ファイルを読み取って「magicvars」に割り当てるにはどうすればよいですか。インラインJSONの束でHTMLを乱雑にしたくありません。

アドバイスをいただければ幸いです。ジャニー

4

2 に答える 2

1

これは有効なJSONではないため、ほとんどのJSON.parse実装では解析されません。キー名を引用して、末尾のセミコロンを削除してみてください。

Chromeでは、

JSON.parse('{ a: "b" }')

を生成します

SyntaxError: Unexpected token ILLEGAL

のように

JSON.parse('{ a: "b" };')

ただし、有効なJSONを使用します(引用符で囲んでください"a") 。

JSON.parse('{ "a": "b" }')

期待される結果を返します。

于 2011-06-15T19:55:51.413 に答える
0

ファイルの名前をに変更してみてくださいstandard.json

私の推測では、dojoはファイルをプレーンテキストの文字列として読み取っているため、JSONを解析していません。(他の回答で指摘されているように、これは無効です)

于 2011-06-15T19:58:07.143 に答える