Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
59
rated 0 times [  64] [ 5]  / answers: 1 / hits: 18513  / 11 Years ago, sun, february 24, 2013, 12:00:00

I am struggling to return JSON data and convert it into an observable. The data is returned fine in JSON format, but it doesn't seem to be assigned to the observable. Can anybody help? I am guessing the issue is in the success part of the ajax call :



<script type=text/javascript>

function StandingsViewModel() {
var self = this;

self.standings = ko.observableArray();

self.DivisionName = ko.observable('');

self.afceast = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return AFC East == i.DivisionName;
});
});

self.afccentral = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return AFC Central == i.DivisionName;
});
});

self.afcwest = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return AFC West == i.DivisionName;
});
});

self.nfceast = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return NFC East == i.DivisionName;
});
});

self.nfccentral = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return NFC Central == i.DivisionName;
});
});

self.nfcwest = ko.computed(function () {

return ko.utils.arrayFilter(self.standings(), function (i) {
return NFC West == i.DivisionName;
});
});

$.ajax({
dataType: json,
url: /api/standing/GetStandingsBySeason/2018,
beforeSend: function (xhr) {
$('#divStandings').html('');
$('#divStandings').addClass('ajaxRefreshing');
xhr.setRequestHeader('X-Client', 'jQuery');
},
success: function (result) {
$('#divStandings').removeClass('ajaxRefreshing');
self.standings(JSON.parse(result));
}
});
}

$(document).ready(function () {
ko.applyBindings(new StandingsViewModel());
});

</script>

More From » json

 Answers
6

You should use Knockout Mapping plugin and map your result to observable.



var observableData = ko.mapping.fromJS(result);


or if your object wasn't parsed automatically by jQuery



var observableData = ko.mapping.fromJSON(result);


If your data type is array it will be converter to observableArray, so to get it items as normal array you should get like from any other observable by adding brackets;



var array = observableData();


That array can by assigned to your obsevableArray in that way:



self.standings(array);

[#80035] Friday, February 22, 2013, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
daquanmilesw

Total Points: 57
Total Questions: 102
Total Answers: 110

Location: Wallis and Futuna
Member since Sat, Aug 6, 2022
2 Years ago
daquanmilesw questions
;