ajax成功挂起浏览器

时间:2014-04-22 03:17:51

标签: jquery ajax

输入更改触发了ajax调用,成功时我们修改了页面上80%的内容。

2到3个请求响应没问题,然后浏览器挂起,直到成功函数

更新数据。

var options = {
            url: form.attr("action"),
            data: form.serializeArray(),
            type: 'POST',
            beforeSend: function ()
            {

                $("#main_page :input").attr("disabled","disabled");
            },
            success: updatePage

        };
    form.ajaxSubmit(options);

,成功函数是

updatePage: function(data)
{
    if(data.isEmptyDiv)
    {   
        $('#Messages').html(data.gMessagesHtml);    
        $('.options').remove();
        $('table').remove();
        $('.offers').remove();
        $('.code').remove();
        $('.totals').remove();
        $('.summary').append(data.Html);
        $('.summary').addClass('empty');
        $('.summary').addClass('empty');
    }
    else
        {
            $('#Messages').html(data.MessagesHtml);
            $('table').replaceWith(data.Items);
            $('table').find('.test input[type="number"]').ESO_number_input();
    bindAll();
            $('.offers').html(data.offers);
            $('.code').html(data.code);
            $('.totals').html(data.Totals);
            if(  $('.offers .image').html() != ''){$('div.item_container_holder').hide();}else{$('div.item_container_holder').show();}
        }
    if (!data.Eligible) {
        $('#ButtonTop').removeClass('major');
        $('#ButtonBottom').removeClass('major');
        $('#ButtonTop').addClass('minor');
        $('#ButtonBottom').addClass('minor');
        $('#ButtonTop').attr('disabled', 'disabled');
        $('#ButtonBottom').attr('disabled', 'disabled');
    } else {
        $('#ButtonTop').removeClass('minor');
        $('#ButtonBottom').removeClass('minor');
        $('#ButtonTop').addClass('major');
        $('#ButtonBottom').addClass('major');
        $('#ButtonTop').removeAttr('disabled');
        $('#tButtonBottom').removeAttr('disabled');
    }


},

2,3 ajax请求工作正常。之后,浏览器会挂起,因为所有浏览器都会发生这种情况。

1 个答案:

答案 0 :(得分:0)

以下是一些想法。

功能是什么

bindAll(); 

做什么?你是多次绑定同一个事件并导致某种循环吗? 也许你需要首先取消绑定或绑定多次调用它一次?

data.Items

in

$('table').replaceWith(data.Items);

真的是一个渲染的html表吗?你在页面上有多个表吗?如果是这样,你应该用ID来引用它。