1

次のビューモデルがあります。ログイン時に、データベース内のすべての都市を一覧表示する選択ボックスをユーザーに表示させたいと考えています。ここにビューモデルがあります

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リクエストによって作成された配列を監視可能な配列に取得して、機能させるにはどうすればよいですか? 私のばかげたことを容認してくれてありがとう。

4

1 に答える 1

1

次のように、結果を解析して JSON オブジェクトに戻す必要があります。

$.get("dbhandler.php", { "fun": "cities"}, function (data) {
    self.cities(JSON.parse(data));
});
于 2012-07-11T08:54:14.613 に答える