可以't get return Array插入到knockoutjs observableArray中

Can't get returned Array inserted into knockoutjs observableArray

本文关键字:插入 knockoutjs observableArray Array return get 可以      更新时间:2023-09-26

我有以下视图模型。登录后,我希望用户有一个选择框,列出数据库中的所有城市。这是的视图模型

function ppfoViewModel(){
        var self= this;
        self.userName = ko.observable();
        self.password = ko.observable();
        self.loggedIn = ko.observable(false);
        self.validateUser = function(){
            if(self.userName()=='Admin'&&self.password()=='Admin'){ 
                var temp;
                self.loggedIn(true);
                $.get("dbhandler.php", { "fun": "cities"}, function (data) {self.cities(data);});               
            }else{
                self.loggedIn(false);
            }};
        self.cities = ko.observableArray()
        self.selectedCity = ko.observable();
        self.store = ko.observable();
        self.drink = ko.observable();
        self.test = ko.observable();
    };

ajax请求调用一个返回以下字符串的页面:

[{"cityName":"Provo","cityID":"1"},{"cityName":"Salt LakeCity","cityID":"2"}]

这是景色。

<select data-bind="options: cities, optionsText:'cityName', selectedOptions: selectedCity""></select>

当我登录时,我知道我得到了正确的字符串,但是选择框有几个空格作为选项。我确信我在这里遗漏了一些明显的东西,但我如何将php页面和AJAX请求创建的数组放入可观察数组中,使其工作?提前感谢你容忍我的荒谬。

您需要将结果解析回JSON对象,如:

$.get("dbhandler.php", { "fun": "cities"}, function (data) {
    self.cities(JSON.parse(data));
});