繁体   English   中英

将Javascript对象转换为Javascript数组

[英]Converting Javascript object to Javascript array

我正在使用一个可剔除的可观察数组来填充一个dropdownlist。如果我对数组值进行硬编码,则会填充dropdownlist。但是我现在正尝试从数据库中获取数据。我正在使用JSON格式的javascript对象。 javascript对象的单个属性,即; 认证,我正在创建一个要传递回脚本的数组,但是每次传递回的值都是不确定的,而该数组会显示在控制台中。

转换为我正在使用的数组的代码是

var getCertifications = function () {
    $.ajax({
    type : "GET",
    async : false,
    url : "/Provider/GetCertifications",
    dataType : "json",
    success: function (data) {
        var arrCertification = [];
        $.each(data, function (i, item) {
            arrCertification.push((item.Certification));
        });
        return arrCertification;
    },
    error : function () {
        alert(" An error occurred.");
        }
     });
 }; 

淘汰赛可观察到的代码是

  var certificates = getCertifications();
  self.certificationArray = ko.observableArray(certificates);

HTML是

 <div class="form-group">
            <label class="col-sm-2 control-label labelfont">Certification:</label>
            <div class="col-sm-6">
                <select class="form-control" id="certification" name="certification" data-bind="value: certification, options: certificationArray, optionsCaption: 'Select a Certification'">
                </select>
            </div>
        </div>

有人可以指导我哪里出错了。

getCertifications()函数不返回任何内容。 它所做的只是启动一个ajax调用。

您需要使用某种回调或promise对象来获取此调用的结果。 使用回调看起来像:

var getCertifications = function (cb) {
    $.ajax({
    type : "GET",
    async : false,
    url : "/Provider/GetCertifications",
    dataType : "json",
    success: function (data) {
        var arrCertification = [];
        $.each(data, function (i, item) {
            arrCertification.push((item.Certification));
        });
        cb(arrCertification);
    },
    error : function () {
        alert(" An error occurred.");
        }
     });
 };

 getCertifications(function(certificates) {
     self.certificationArray = ko.observableArray(certificates);
 });

更好的模式是使用诺言。 $ .ajax方法返回一个promise。 但是,为了了解异步代码的处理方法,回调方法是一个不错的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM