Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js和ie fetch仅使用开发工具工作_Backbone.js_Fetch - Fatal编程技术网

Backbone.js和ie fetch仅使用开发工具工作

Backbone.js和ie fetch仅使用开发工具工作,backbone.js,fetch,Backbone.js,Fetch,我正在尝试使用BB.js构建一个小应用程序 当然,在FF、CHROME和Opera中一切都可以工作,但在IE中却不行 我只是尝试使用Restful(php后端)获取模型,以获取模型集合 在IE中,即使多次刷新,也不会发生任何事情。但当我打开de-dev工具检查控制台并刷新时,它突然工作了 模型与集合 (function($) { //a fact model window.Fact = Backbone.Model.extend({ defaults: { fact

我正在尝试使用BB.js构建一个小应用程序

当然,在FF、CHROME和Opera中一切都可以工作,但在IE中却不行

我只是尝试使用Restful(php后端)获取模型,以获取模型集合

在IE中,即使多次刷新,也不会发生任何事情。但当我打开de-dev工具检查控制台并刷新时,它突然工作了

模型与集合

(function($) {


//a fact model
window.Fact = Backbone.Model.extend({

    defaults: {
        factContent: ''
    },


    initialize: function Fact(){
        console.log("just created a fact");

        this.url = "fact.php?fact="+this.id,

        this.bind("error", function(model, error){
            console.log(error);
        });
    },

    parse : function(resp, xhr) {

        //new fact added
        if(resp.type == "create")
            this.url = "fact.php?fact="+resp.id;

        return resp;
    }

});

//collection of models
window.Facts = Backbone.Collection.extend({

    model: Fact,

    url: "facts.php",

    initialize: function(){
        console.log('fact collection created');
    }
});


//facts view
window.FactsCollectionView = Backbone.View.extend({

    el: $("#factsCollectionContainer"),

    initialize: function(){
        this.template = _.template($('#factsCollectionTemplate').html());

        //binding
        _.bindAll(this, 'render');
        this.collection.bind('change', this.render);
        this.collection.bind('add', this.render);
        this.collection.bind('remove', this.render);
        this.collection.bind('reset', this.render); 

    },

    render: function(){
        var renderedContent = this.template({facts : this.collection.toJSON()});
        $(this.el).html(renderedContent);
        return this;
    }

});


$(document).ready(function(){
    //create a fact collection and populate it
    factsc = new Facts();


                //NOT WORKING IN IE (no alerts)
                //WORKING ONLY USING DEV TOOL
    factsc.fetch({success:function(){
        //create a view and show collection after fetch is done
        factsView = new FactsCollectionView({collection:factsc});
        factsView.render(); 

        alert("success fetch");
    }, error: function(){
        alert("error fetch");
    }});    
});





})(jQuery);
获取并返回此JSON:
[{“id”:“48”,“factContent”:“Hello”},{“id”:“47”,“factContent”:“World”}]

我认为这是IE缓存ajax调用造成的。检查此问题:。基本上,您可以强制IE不缓存您的请求,如下所示:

factsc.fetch({
cache: false,
success:function(){ /* stuff */
},
error:function() {/* error message */
});

我也有类似的问题。通过删除
console.log

你也可以尝试同样的方法。这看起来很傻,但它确实有效


谢谢。

我们遇到了类似的问题。我们用计算机解决了这些问题

  • 在Ajax级别禁用缓存

    $.ajaxSetup({ cache:false, });

  • 我们使用HTML5样板控制台覆盖插件代码,而不是删除生产代码中的console.log


    • 最近,正是这种情况让我彻底中风了。问题确实是IE缓存AJAX调用结果。然而,检验这一理论是极其困难的。您可以看到,当调试控制台打开时,Microsoft会在任何地方禁用缓存。(当我写“helpfully”时,我是指法律允许的最大限度的讽刺。)通过这样做,调试任何缓存问题成为WTF中的一项练习

      步骤1:用户报告问题,所以您可以在IE中尝试并确认问题

      步骤#2:打开调试控制台并逐步执行,结果发现问题神秘地消失了

      第三步:关闭调试器,再试一次,结果发现调试器再次失败

      泡沫,冲洗,重复

      我的问题很复杂,因为这个网站运行的是HTTPS,它不应该以任何方式、形状或形式缓存。微软甚至同意这一点:

      但是,请仔细注意,“出于安全原因,HTTPS页面不会被缓存”这句话实际上是正确的。然而,AJAX响应似乎不符合“HTTPS页面”的要求

      简而言之,在jQuery中禁用缓存。对于主干应用程序,将以下内容放在应用程序的init()函数顶部附近应该可以做到这一点:

      $.ajaxSetup({ 缓存:false });