4

JavaScript オブジェクトとして解析されたときに JSON のリストがどのように機能するかはわかりません。しかし、私はJavaScriptに慣れていないので、私の質問と提案された解決策にはばかげた間違いが含まれている可能性があります。JSON ファイルがあり、そこからフォームを作成する必要があるため、jQuery .parseJSON で解析して JavaScript オブジェクトを取得しています。json ファイルは次のとおりです。

{"Form": [{"Name":"Conan",
           "Description":"Adventure", 
       "Value":"Children Movie"}, 
      {"Name":"Sandocan",
       "Description":"Adventure",
       "Value":"Children Movie"},
      {"Name":"Terminator",
       "Description":"Sci-Fi",
       "Value":"Action Movie"},
      {"Name":"Iron Man",
       "Description":"Adventure",
       "Value":"Children Movie"}]}

構文の観点からは正しいはずです。

それを処理するコードは Web ページにあり、JSON コードはテンプレート タグ {{line}} によってページに出力されます。変数に割り当ててみましたが、コードが実際にそれを処理するかどうかはまだわかりません。ただし、ページのコードは以下のとおりです。

<html><script src="../jquery.js">
</script>
<body><p> Data previously inserted: {{line}}</p>
<form action="/myform/" method="post">Choose the movie you prefer:<br />
<script language=javascript>
var lin={{line}}
var obj=jQuery.parseJSON(lin);
function str_to_obj(o){ 
        document.write("Hello world");
        for(item in o.Form) {
                document.write(item.Name);
        };
}
str_to_obj(obj);
</script>
<input type="radio" name="title"><br />
<input type="text" name="description"><br />
<input type="submit" value="Submit">
</form></body></html>

Firebug レポート:

SyntaxError: invalid property id
var obj=jQuery.parseJSON({&quot;Form&quot;: [{&quot;Name&quot;:&quot;Conan&quot;

私はばかげたことをやっています、確かに、しかし私はそれを機能させなければなりません。

4

3 に答える 3

3

jQueryでタグ付けしたので、次のようにしてみませんか(アイテムをラジオボタンとして表現したい場合):

を使用してjsonファイルをフェッチするには$.ajax:

$.ajax({
    url: 'file.json',
    dataType: 'json',
    success: function(data){
        //manipulate the parsed json here ('data')
    }
});

ajax 呼び出しを使用しない「ハードコード」の例:

var objectFromJson = $.parseJSON('{"Form": 
    [{"Name":"Conan","Description":"Adventure", "Value":"Children Movie"},
     {"Name":"Sandocan","Description":"Adventure","Value":"Children Movie"},
     {"Name":"Terminator","Description":"Sci-Fi", "Value":"Action Movie"},
     {"Name":"Iron Man","Description":"Adventure","Value":"Children Movie"}]}');

$(function(){

    $.each(objectFromJson.Form, function(k, v){

        var $radio = $('<input/>')
                        .prop({ type: 'radio', id: v.Name, name: 'form' })
                        .val(v.Value),
            $label = $('<label />')
                        .prop({ 'for': v.Name })
                        .text(v.Name)
                        .prepend($radio);

        $('form[action="/myform/"]').append($label);
    });

});

フィドル

于 2013-07-18T13:52:45.540 に答える
1

問題は " だと思います。あなたのJSON文字列では無効になります。

すべての を実際の引用符jsonString.replace(/&quot;/g,'"');に置き換える場合。&quot;

例については、このjs フィドルを参照してください。

于 2013-07-18T14:00:10.573 に答える