我有以下视图模型。登录后,我希望用户有一个列出数据库中所有城市的选择框。这是视图模型
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请求创建的数组放入可观察数组中以便它可以工作?提前感谢我容忍我的荒谬。
答案 0 :(得分:1)
您需要将结果解析回JSON对象,例如:
$.get("dbhandler.php", { "fun": "cities"}, function (data) {
self.cities(JSON.parse(data));
});