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
将会显示。
2.what $.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){}
})
先谢谢,抱歉我的英语不好。
答案 0 :(得分:1)
所以,这应该是两个实际的问题,但是anywho(反向顺序!):
2:来自jQuery documentation:$.getJSON
是一个简写的Ajax函数,相当于:
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
所以他们是一样的。
1:您尝试拨打JSON.stringify()
来自getJSON
电话的结果是多余的。 getJSON
已经这样做了。问题是双重的:这些解析器都不能解析.net列表(我可能错了,但我有60%肯定)。在任何一种情况下,更好的解决方案是在Web方法中将列表序列化为JSON,并返回已解析的JSON。 .NET有this ability built-in。
二,您的列表没有d
属性。因此,即使你对那部分进行排序,你也会得到一个未定义的错误。
答案 1 :(得分:0)
关于你的淘汰赛问题:
以下是解决问题的代码:
[WebMethod]
public static IEnumerable<KnoPerson> GetPeople()
{
return Builder<KnoPerson>.CreateListOfSize(10).Build();
}
public class KnoPerson
{
public int ID { get; set; }
public int FirstName { get; set; }
}
<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="Scripts/knockout-2.1.0.js"></script>
<script type="text/javascript" src="Scripts/knockout.mapping-latest.js"></script>
<script type="text/javascript">
$(function () {
var model = {};
$.ajax({
url: "KnockoutBindingFromPageMethod.aspx/GetPeople",
data: null,
type: "POST",
dataType: "json",
contentType: "application/json",
cache: false,
async: false,
success: function (myData) {
model.people = ko.mapping.fromJS(myData.d);
model.yo = ko.observable("plop");
ko.applyBindings(model);
},
error: function (xhr) {
alert(xhr.responseText);
}
});
});
</script>
<div data-bind="text: yo"></div>
<div data-bind="foreach: people">
<h3 data-bind="text: ID"></h3>
<p>
Name: <span data-bind="text: FirstName"></span>
</p>
</div>
2.what $ .getJSON和dataType:json?
之间的区别
.getJSON
是一种快捷方式,内部使用.ajax
.getJSON
函数设置以下属性:
dataType: “json”
type: "GET"