2

1.asp.netのノックアウトについて2つの質問があります。
サーバー側の方法:

<WebMethod>
Public Shared Function foo() As List(Of person)
    Return New List(Of person)() From {New person With {.id = 1, .fname = "meysam"},
                                         New person With {.id = 2, .fname = "yasaman"}}.ToList
End Function

jsonとノックアウトへのバインド:

var VM = {};
$.getJSON("default.aspx/foo", function (data) {
    var tmp = JSON.stringify(data.d);
    VM.model =  
    ko.applyBindings(VM);
});

html:

<div data-bind="foreach: model">
<h3 data-bind="text: id">
</h3>
<p>
    Name: <span data-bind="text: fname"></span>
</p>

しかし、ブラウザで実行すると、何も起こりません。fname,id表示されます。

$.getJSON2.と の違いはdataType:json

 $.getJSON("default.aspx/foo", function (data) {
    var tmp = JSON.stringify(data.d);
});

$.ajax({
type:"post",
url:"default.aspx/foo",
contentType:"application/json;charset=utf-8",
dataType:"json",
success:function(data){}
})
4

2 に答える 2

1

したがって、これは実際には2つの実際の質問になるはずですが、だれでも(逆の順序で!):

2:jQueryのドキュメントから:$.getJSONはAjaxの省略関数であり、次と同等です。

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

だから彼らは同じです。

JSON.stringify()1:呼び出しの結果を呼び出す試みgetJSONは冗長です。getJSONすでにそれをします。問題は2つあります。これらのパーサーはどちらも.netリストを解析できません(これについては間違っているかもしれませんが、60%確信しています)。いずれの場合も、より良い解決策は、WebメソッドでリストをJSONにシリアル化し、すでに解析されたJSONを返すことです。.NETにはこの機能が組み込まれています。

d2つ目は、リストにプロパティがないことです。したがって、その部分を整理しても、未定義のエラーが発生します。

于 2012-08-01T05:17:12.940 に答える
0
于 2012-08-01T05:37:02.353 に答える