我正在使用KnockoutJS進行數據綁定。 下面的代碼是控制器的操作方法如何將JSON數組轉換爲JavaScript數組?
public JsonResult GetPeople()
{
var people = new List<Person>
{
new Person {Name = "aaaa", Address = "aaaaaaaaa"},
new Person {Name = "bbbb", Address = "bbbbbbbbb"},
new Person {Name = "cccc", Address = "ccccccccc"}
};
return Json(people, JsonRequestBehavior.AllowGet);
}
而且波紋管的客戶端代碼片斷
<ul data-bind="foreach: people">
<li>NAME:<span data-bind="text: Name"></span></li>
<li>ADDRESS:<span data-bind="text: Address"></span></li>
</ul>
<script>
function getPeopleFromServer() {
var people= [];
$.ajax({
url: "GetPeople",
cache: false,
type: "GET",
success: function (result) {
console.log("result= " + result);
people = $.parseJSON(result);
console.log("people= " + people);
}
});
return people;
}
function ViewModel() {
var self = this;
// data
self.people = ko.observableArray(getPeopleFromServer());
}
ko.applyBindings(new ViewModel());
</script>
的問題是,人們在getPeopleFromServer方法變量總是空,而結果具有正確的價值服務器。 我錯過了什麼嗎?
你從console.log得到了什麼(「result =」+ result); –
您是否檢查過jQuery是否將解析結果解析爲JSON?您可以刪除'$ .parseJSON'並查看是否開始工作... – rjz
'success'是一個內聯異步函數。基本上,'return people'發生在'success'函數被調用之前,因爲ajax調用是非阻塞的。您需要重新設計您的ViewModel以異步工作(或關閉異步),希望其他人可以用代碼修復編程 – Tom