0

2 つの個別の JSON リストが必要なプロジェクトがあります。これは、コントローラーで JsonResult を使用できないため、クライアント側で解析する必要があることを意味します。以下を使用して、リストを Json に解析し、Newtonsoft.Jsonパッケージからビュー モデルの文字列を送信します。

Model.JsonAllActiveItems = JsonConvert.SerializeObject(Model.AllActiveItems,Formatting.None);

次に、スクリプトファイルで次のように言います。

function setActiveList(list) {
    alert(list)//for test
    activeList = JSON.parse(list);  
};

解析コマンドの後に「Uncaught SyntaxError: Unexpected token o」というエラーが表示され続けます

JSON 文字列は次のようになります。

[{"ProductCompositions":[],"ImageName":"Item1","Version":0,"StatusInt":0,"Status":0,"Id":1},{"ProductCompositions":[],"ImageName":"Item2","Version":0,"StatusInt":1,"Status":0,"Id":2},{"ProductCompositions":[],"ImageName":"Item3","Version":0,"StatusInt":1,"Status":0,"Id":4},{"ProductCompositions":[],"ImageName":"Item2","Version":0,"StatusInt":0,"Status":0,"Id":5},{"ProductCompositions":[],"ImageName":"Item4","Version":0,"StatusInt":0,"Status":0,"Id":6},{"ProductCompositions":[],"ImageName":"Item4","Version":0,"StatusInt":0,"Status":0,"Id":7}]

何か案は?乾杯

更新:奇妙なのは、Chrome JavaScript デバッガーでは、解析コマンドの前であっても、「リスト」に正しいデータが適切に入力されていることです。ただし、次のように JSON.parse() を使用せずにテストしようとすると、リストが null のような空の文字列が表示されます。

 var myString = "";
for (var i = 0; i < list.length; i++ ) {
    myString += "<li>" + list[i].ImageName + "</li>";
}
document.getElementById("selected-items-comp").innerHtml = myString;
4

1 に答える 1

0

そのため、MVC3 で Newtonsoft.Json dll を使用する場合、JavaScript で JSON を解析する必要がないという問題がありました。この魔法は舞台裏で起こります。テストで何も得られなかった理由は、私が jQuery 初心者であり、

document.getElementById("selected-items-comp").innerHtml = myString;

それ以外の

$('#selected-items-comp').html(myString);

今では動作します。

于 2012-06-18T22:39:44.077 に答える