2014-04-22 2 views
2

입력 변경으로 인해 아약스 전화가 걸렸고 성공시 페이지의 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 아약스 요청이 제대로 작동하는 것입니다. 그 후 브라우저가 멈추는 경우가 있습니다.

답변

0

다음은 몇 가지 아이디어입니다.

bindAll(); 

할 기능에게 무엇을? 같은 이벤트를 여러 번 바인딩하고 어떤 종류의 루프를 일으키고 있습니까?
어쩌면 먼저 바인딩을 해제해야하거나 여러 번 호출하면 바인딩을 한 번 적용하는 방식으로 바인딩해야합니까?

정말

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

렌더링 된 HTML 테이블

에서

data.Items 

인가? 페이지에 두 개 이상의 테이블이 있습니까? 그렇다면 ID로 참조해야합니다.

+0

bindall()은 한 번만 바인딩됩니다. 페이지에 테이블이 하나 밖에 없습니다. 데이터에 항목이 많아서 브라우저가 멈추는 원인이됩니다. – sree

관련 문제