【问题标题】:$.ajax doesnt fire event on IE and succeed only after page reload$.ajax 不会在 IE 上触发事件,只有在页面重新加载后才会成功
【发布时间】:2013-01-10 10:31:01
【问题描述】:

这是我的代码:

...
$('#collection_menu ul li').click(function(e) {
  e.preventDefault();
  e.stopPropagation();

  shoesApparaissent();
});

...

function shoesApparaissent() {

  $.ajax({
    async:true,
    url : hrefCollection,
    type : 'GET',
    dataType : 'json'
  }).success(function(data) {

console.log("data: " + data);

  }).fail(function(e, str) {

console.log(e+'\n'+str);

});
...

在我重新加载页面包含代码之前,此代码似乎在 FF、Safari、Opera 和除 IE 之外的所有其他导航器上运行。

当我触发点击事件时,函数“shoesApparaissent()”被调用,$.ajax 不会触发成功或失败事件(控制台中不显示任何内容)。

我不确定这里的问题是什么,有什么想法吗?

【问题讨论】:

  • 好的,尝试以下方法之一:删除停止传播。或者不要在函数中使用ajax,直接做。我认为这就是让 IE 更疯狂的原因:)
  • 不幸的是,这两种解决方案都不起作用。

标签: jquery ajax internet-explorer-9


【解决方案1】:

您使用的是什么版本的 jQuery?对于这个答案,我假设您将使用更新的版本,如 1.8。在 jQuery 1.5+ 中,$.ajax() 方法返回一个实现了Promise 接口的对象。

不要使用.success() 回调(在jQuery 1.8 中已弃用),而是使用.done()

$.ajax({
    url: hrefCollection,
    type: 'GET',
    dataType : 'json'
}).done(function(data) {
    console.log("data: " + data);
}).fail(function(e, str) {
    console.log(e+'\n'+str);
});

【讨论】:

  • 谢谢,我尝试了另一种解决方案:预加载点击时出现的所有数据,然后使用与 href 对应的 ID 调用我的对象(在我的情况下是可能的)。但是我发现这样的其他问题,在纠正的每一步,都会出现另一个问题。总是不调用回调函数(例如在 fadeOut 上)...看来我必须针对这种情况更改所有算法。一定有问题。
猜你喜欢
  • 2020-01-26
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多