1

JSON データを Ajax 呼び出しで直接マップおよびバインドしようとしましたが、成功しませんでした。アラートには、要求されたデータが表示されます。このアラートの内容をコピーしてテスト変数に貼り付けると、マッピングは正常に機能します。結果に直接マップ/バインドできないのはなぜですか? 「test」と「result.d」の違いは何ですか? (結果へのバインド - .d なしでも機能しません)。

助けてくれてありがとう。

 var test = { "formulier": { "titel": "test", "formulier_id": 4, "vragen": [{ "vraag_id": 5, "vraag": "Hoe gaat het?", "soortvraag_id": 4, "soortwaarde_id": 13, "verplicht": false, "antwoorden": [] }, { "vraag_id": 6, "vraag": "Dit is een kopje", "soortvraag_id": 18, "soortwaarde_id": 13, "verplicht": false, "antwoorden": [] }, { "vraag_id": 3, "vraag": "vraag 3k", "soortvraag_id": 6, "soortwaarde_id": 13, "verplicht": false, "antwoorden": [{ "antwoord": "nieuw2", "antwoord_id": 7, "vraag_id": 3, "iscorrect": true }, { "antwoord": "echt waar?", "antwoord_id": 5, "vraag_id": 3, "iscorrect": false }, { "antwoord": "nieuw 123", "antwoord_id": 2, "vraag_id": 3, "iscorrect": false }, { "antwoord": "nieuw", "antwoord_id": 6, "vraag_id": 3, "iscorrect": false }] }] } }

            // This doesn't work 
            $.ajax({
                        type: "POST",
                        contentType: "application/json",
                        url: "../formulierService.asmx/getLeegFormulier",
                        data: "{'id': " + 4 + "}",
                        dataType: "json",
                        success: function (result) {
                            alert(result.d); //content of alert was pasted into var test above
                            var ViewModel = ko.mapping.fromJS(result.d); 
                            ko.applyBindings(ViewModel);
                        }
            });

            // This does work
            var ViewModel2 = ko.mapping.fromJS(test);
            ko.applyBindings(ViewModel2);
4

1 に答える 1

1

ここで、 fromJS を使用するには、json 文字列を js オブジェクトにデシリアライズする必要があります。

var test = JSON.parse(result.d);

次に、電話する

var ViewModel2 = ko.mapping.fromJS(test);

fromJSON別のオプションは、の代わりにを直接使用することfromJSです。

var ViewModel2 = ko.mapping.fromJSON(result.d);

于 2013-07-29T18:41:17.900 に答える