【问题标题】:Backbone.js's Ajax call different behavior in Chrome and FirefoxBackbone.js Ajax 在 Chrome 和 Firefox 中调用不同的行为
【发布时间】:2016-07-26 17:23:50
【问题描述】:

我在 Firefox 中遇到了一个奇怪的问题。我们正在加载一个页面,同时调用 Routers.initializeRouters();发送 ajax 请求以获取数据,并且 loadFormSuccessHandler 函数将响应填充到视图中。

在 Chrome 的情况下,Ajax 请求等待视图初始化,然后数据通过 ajax 响应填充到视图中。

对于 Firefox,Ajax 请求获取数据并开始填充视图,但由于某些视图仍未初始化而失败。

如何在填充数据之前通知 ajax 请求以等待视图被初始化。

任何指针都会有所帮助。

Main.js

var Main = {

    treeView : null,
    formView : null,
    mainTabBarView : null,
    currentFieldView : null,
    designModeViewPointer : null,
    carousel : null,
    advancedControlsView : null,

    renderUI : function() {
        Templates.loadTemplateList();
        Utility.initializeFieldHandlerMap();
        Views.showBody();
        Routers.initializeRouters();
        var form = new Models.Form();
        this.formView = Views.showForm('formDetailsDiv', form);
        this.treeView = new Views.TreeView({
            el : $('#controlsTreeDiv'),
            model : null
        });

        this.treeView.getTree().attachEvent("onDblClick",
                ControlBizLogic.formTreeNodeClickHandler);

        Main.mainTabBarView = new Views.TabBarView({
            el : $('#csdOperationsContainer'),
            model : null
        });
        Views.showControlTab('control');
        this.carousel = $('#controlTypesSlider');
        this.carousel.tinycarousel();
        Main.advancedControlsView = new Views.AdvancedPropertiesTabView({
            el : $('#advancedControlProperties'),
            model : null
        });
        // init design mode
        Main.designModeViewPointer = new Views.DesignMode({
            el : $("#design")
        });
        Routers.designModeOnBeforeDragEvent();
        Routers.designModeOnDragEvent();

    }
}

Main.renderUI();

带有 ajax 调用响应的方法

loadForm : function(_id, edit) {
                    $("#formWaitingImage").show();
                    if (Main.formView == null) {
                        Main.formView = Views.showForm('formTab',
                                new Models.Form({
                                    "id" : _id
                                }));

                    }
                    Main.formView.getFormModel().set({
                        id : _id
                    });
                    GlobalMemory.editForm = (edit == "true");
                    Main.formView.getFormModel().fetch({
                        url : 'csdApi/form/' + _id + "/" + edit,
                        success : this.loadFormSuccessHandler
                    });
                    // save as
                },

loadFormSuccessHandler : function(model, response) {
                    var formId = model.get('id');
                    if (formId != undefined && formId != null) {
                        GlobalMemory.editForm = true;
                    }
                    Routers.formEventsRouterPointer.updateUI(model);
                    Routers.formEventsRouterPointer.loadFormulae(Main.formView
                            .getFormModel(), "", "");

                    AdvancedControlPropertiesBizLogic
                            .loadSkipRules(Main.formView.getFormModel());
                    Main.formView.getFormModel().set({
                        skipRules : model.get('skipRules'),
                        id : model.get('id')
                    });
                    Main.advancedControlsView.setTableCss('formulaTable');
                    // Main.mainTabBarView.loadFormSummary();
                    Main.mainTabBarView.getFormSummaryView().displayFormInfo(
                            model.getFormInformation());

                    $("#formWaitingImage").hide();
                    // save form

                    if (!GlobalMemory.editForm) {

                        $('#saveForm').prop("value", " Save As ")
                    }
                },

【问题讨论】:

    标签: javascript jquery ajax backbone.js


    【解决方案1】:

    此问题与特定的 firefox 版本有关,已在下一个 firefox 版本中修复。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2014-10-24
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多