关于淘汰赛的问题
Posted
技术标签:
【中文标题】关于淘汰赛的问题【英文标题】:Questions about knockout 【发布时间】:2012-07-29 22:53:48 【问题描述】: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)
)
【问题讨论】:
【参考方案1】:所以,这确实应该是两个实际问题,但是任何人(以相反的顺序!):
2:来自jQuery documentation:$.getJSON
是一个简写Ajax函数,相当于:
$.ajax(
url: url,
dataType: 'json',
data: data,
success: callback
);
所以它们是一样的。
1:您尝试在getJSON
调用的结果上调用JSON.stringify()
是多余的。 getJSON
已经这样做了。问题有两个方面:这些解析器都不能解析 .net 列表(我可能对此有误,但我有 60% 的把握)。无论哪种情况,更好的解决方案是在 web 方法中将列表序列化为 JSON,并返回已解析的 JSON。 .NET 有this ability built-in。
第二,您的列表没有d
属性。所以即使你把那部分整理出来,你也会得到一个未定义的错误。
【讨论】:
【参考方案2】:关于你的淘汰赛问题:
以下代码可解决您的问题:
输出
ASPX 代码后面
[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;
ASPX
<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.$.getJSON和dataType:json有什么区别?
.getJSON
是快捷方式,内部使用.ajax
.getJSON
函数设置以下属性:
dataType: “json”
type: "GET"
【讨论】:
以上是关于关于淘汰赛的问题的主要内容,如果未能解决你的问题,请参考以下文章
关于python的知识你了解多少?这六个知识你再不知道就淘汰啦!全都知道算我输