[英]F# MVC Json Result, on the client empty object after Ajax call
I have a F# mvc app, and I am trying to get ajax call into and endpoint that will return a list of people, which will then display in a table. 我有一个F#mvc应用程序,并且尝试将ajax调用输入到end并返回一个人列表,然后将其显示在表中。
type Person(credits:int, name:string, serverDateTime:DateTime ) = class end
type PeopleMeta( persons:ResizeArray<Person> ) =
member t.size() = 1
[<HttpGet>]
member this.getPeopleMeta()=
let person1 = Person(1,"A",DateTime.Now)
let person2 = Person(2,"B",DateTime.Now)
let persons = new ResizeArray<Person>()
persons.Add(person1);
persons.Add(person2);
let peopleMeta = PeopleMeta( persons )
this.Json( peopleMeta , JsonRequestBehavior.AllowGet )
On the Html/JavaScript I have this... 在HTML / JavaScript上,我有这个...
<script src="/knockout-2.2.0.js"></script>
<script src="knockout.mapping.js"></script>
<body>
<div id="contentViewModelAjax">
<div>
<div data-bind="template: { name: 'personAjax-template', foreach: people }">
</div>
</div>
</div>
<script type="text/html" id="personAjax-template">
<span data-bind="text: name"></span>
<span data-bind="text: credits"></span>
<span data-bind="text: serverDateTime"></span>
<br />
</script>
<script>
$(document).ready(function () {
execPageViewModel();
});
var execPageViewModel = function () {
function PeopleViewModel(config) {
var self = this;
self.config = config;
self.people = ko.observableArray([]);
self.getPeople = function () {
var url = "getPeopleMeta";
var jqXhr = $.ajax({ url: url, type: 'GET', cache: false, 'data':self.config });
jqXhr.done(function (data) {
console.log(data);
console.log(data.persons);
self.people(data.persons);
ko.applyBindings(self, document.getElementById(self.elementId));
});
setTimeout(self.getPeople, 5000);
};
self.exec = function () {
self.getPeople();
};
};
var viewModelConfig = {'elementId':'contentViewModelAjax','PersonId':1};
var peopleViewModel = new PeopleViewModel(viewModelConfig);
peopleViewModel.exec();
};
</script>
The console.log data is {} and data.persons is undefined. console.log数据为{},而data.persons未定义。 Any ideas ? 有任何想法吗 ?
This new code got me result I was looking for 这段新代码为我寻找的结果
type Person() =
let mutable _credits = 0
let mutable _name = ""
let mutable _serverDateTime = ""
member x.credits with get() = _credits and set v = _credits <- v
member x.name with get() = _name and set v = _name <- v
member x.serverDateTime with get() = _serverDateTime and set v = _serverDateTime <- v
type PeopleMeta() =
let mutable _persons:ResizeArray<Person> = new ResizeArray<Person>()
member x.persons with get() = _persons and set v = _persons <- v
[<HttpGet>]
member this.getPeopleMeta()=
let person1 = Person()
person1.credits <-2
person1.name <- Guid.NewGuid().ToString().Substring(1,5)
person1.serverDateTime <- DateTime.Now.ToString()
let persons = new ResizeArray<Person>()
persons.Add(person1);
let peopleMeta = PeopleMeta( )
peopleMeta.persons <- persons
this.Json( peopleMeta , JsonRequestBehavior.AllowGet )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.