2

1.我有 2 个关于 asp.net 淘汰赛的问题。
服务器端方法:

<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将被显示。

2. $.getJSON和 和有什么不一样 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:来自jQuery文档$.getJSON是一个简写的Ajax函数,相当于:

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

所以他们是一样的。

1:您尝试调用调用JSON.stringify()结果getJSON是多余的。getJSON已经这样做了。问题有两个方面:这些解析器都不能解析 .net 列表(我可能对此有误,但我有 60% 的把握)。无论哪种情况,更好的解决方案是在 web 方法中将列表序列化为 JSON,并返回已解析的 JSON。.NET内置了这种能力

第二,您的列表没有d属性。因此,即使您对该部分进行排序,您也会得到一个未定义的错误。

于 2012-08-01T05:17:12.940 回答
0
于 2012-08-01T05:37:02.353 回答