Ajax Call在Firefox中不会自动响应

时间:2016-05-18 08:41:21

标签: javascript jquery html ajax firefox

我目前正致力于动态生成的手风琴和子手风琴。我已经实现了一个完美的过滤功能。 Ajax用于更改页面内容。因此我创建了以下功能:

function loadSubaccordionContent(elem){
    console.log("loadSubaccordionContent");

    elem = $(elem);
    var accordion_header = $('.ciTypeHeader').closest('.ui-accordion-header-active');
    if(!elem.hasClass("ciTypeHeader")){
        elem = accordion_header;
    };
    var ciTypeId = elem.data("ci-type-id");
    var ciRelationTypeId = elem.data("ci-relation-type-id");
    var sessionId = "accordion_"+ciTypeId+'_'+ciRelationTypeId;
    elem.data("session-id",sessionId);

    ajaxRequest = $.ajax(
        {   url:    '<?php echo APPLICATION_URL?>relation/partial',
            method: 'POST',
            cache: false,
            async: false,
            data:   {
                ciRelationTypeId: elem.data("ci-relation-type-id"),
                ciId: elem.data("ci-id"),
                ciTypeId: elem.data("ci-type-id"),
                page: elem.data("page"),
                rowCount: elem.data("row-count"),
                orderBy: elem.data("ordering-array"),
                filterSet: elem.data("filter-set"),
                filter: elem.data("filter"),
                sessionId: elem.data("session-id"),
                layout: false
            },
        }
    ) .done(function( data ) {
        accordion_header.data("filter-set",false);
        return $("#subaccordionContent_"+ciTypeId+'_'+ciRelationTypeId).html(data);
    })
};

问题是,$ .ajax请求在Firefox中挂起。在IE和谷歌浏览器中一切正常。

如果我在subacordord中的某个位置执行某些操作或者我正在滚动,则只会返回响应。

Firebug中没有错误消息 - &gt;在那里我只看到ajax正在加载。

此外,如果我点击Firebug,我也会收到回复。

有人曾经过类似的行为吗?

2 个答案:

答案 0 :(得分:0)

尝试在window.onload事件中使用该方法。 或者最后使用jquery read方法。

解决方案#1

$(function (){
  loadSubaccordionContent()
});

解决方案#2

window.onload = function loadSubaccordionContent(elem) {
  console.log("loadSubaccordionContent");

  elem = $(elem);
  var accordion_header = $('.ciTypeHeader').closest('.ui-accordion-header-active');
  if (!elem.hasClass("ciTypeHeader")) {
    elem = accordion_header;
  };
  var ciTypeId = elem.data("ci-type-id");
  var ciRelationTypeId = elem.data("ci-relation-type-id");
  var sessionId = "accordion_" + ciTypeId + '_' + ciRelationTypeId;
  elem.data("session-id", sessionId);

  ajaxRequest = $.ajax({
    url: '<?php echo APPLICATION_URL?>relation/partial',
    method: 'POST',
    cache: false,
    async: false,
    data: {
      ciRelationTypeId: elem.data("ci-relation-type-id"),
      ciId: elem.data("ci-id"),
      ciTypeId: elem.data("ci-type-id"),
      page: elem.data("page"),
      rowCount: elem.data("row-count"),
      orderBy: elem.data("ordering-array"),
      filterSet: elem.data("filter-set"),
      filter: elem.data("filter"),
      sessionId: elem.data("session-id"),
      layout: false
    },
  }).done(function(data) {
    accordion_header.data("filter-set", false);
    return $("#subaccordionContent_" + ciTypeId + '_' + ciRelationTypeId).html(data);
  })
};

答案 1 :(得分:-1)

这是一个本地问题。 我删除了浏览器缓存和所有cookie。 现在它正在运作。