IE8中的Backbone Marionette.js model.fetch错误 - 跨域问题?

时间:2014-03-05 00:02:03

标签: backbone.js internet-explorer-8 cors marionette fetch

有很多关于骨干js模型的帖子在IE8中不起作用。始终产生错误回调。在其他地方取得成功:IE10 +,Chrome,FF,Safari等等。只是不在IE8中。

解决问题的一个问题是错误回调中缺少可用的详细信息。想到下面的内容会给我一些细节,但事实并非如此:

    myModel.fetch({
        success: (function () {
            //do stuff                            
        }),

        error:(function (e) {
            alert('Fetch error message: ' + e.toString());                            
        })                       
    });

只生成输出[object Object]。即使我在VS中设置了一个中断并检查错误对象,也没有详细信息。

所以没有关于错误的细节,我开始猜测。

我看到很多帖子都说“IE8和9只支持非标准方式的CORS”或“IE10使用XMLHTTPRequest,IE8使用遗留的XDomainRequest对象”。这些帖子中推荐的解决方案实际上说,如果你必须支持IE8,请使用XDomainRequest。但骨干是在引擎盖下处理ajax。其中一个好处显而易见。我假设如果我们在IE8中,我应该告诉骨干以某种方式有条件地使用XDomainRequest。我该怎么做?

我尝试了Backbone.CrossDomain库(https://github.com/victorquinn/Backbone.CrossDomain),声称这样做是为了你。只需在骨干和骨干跨域抓取之后包含库就可以神奇地工作。尝试过它并且不适合我。仍然会生成相同的错误回调而没有详细信息,因此无法真正解决失败的原因。

1 个答案:

答案 0 :(得分:0)

  

我认为如果我们在IE8中,我应该告诉骨干以某种方式有条件地使用XDomainRequest。我该怎么做?

使用代理功能:

function proxy(){
 if (!!window.XDomainRequest && !window.matchMedia)
  {
  crossDomainAjax();
  } 
 else
  {
  myModel.fetch(
    {
    success: foo, 

    error: bar;                            
    }
   );                       
  }
 }

<强>参考