2014-05-22 2 views
0

나는 다음과 같은 JS 기능이 있습니다얻을 수 없습니다 ajaxStop()/ajaxComplete는() 작동하도록

function getInfo(s,n) { 
    $.ajax({ 
     type : 'POST', 
     url : 'includes/stock_summary.php', 
     timeout : 10000, 
     data : { 
      s : s 
     } 
    }) 
    .done(function(data) { 
     function IsJsonString(str) { 
      try { 
       JSON.parse(str); 
      } catch (e) { 
       alert("Unable to communicate with Yahoo! Finance servers. Please try again later."); 
      } 
      return true; 
     } 
      $.ajax({ 
      type : 'post', 
      url : "includes/stock_desc.php", 
      data : { 
       s : s 
      } 
     }) 
     .done(function(desc) { 
      $('#desc').html(desc); 
     }) 
     if(data.change.charAt(0) == '+') { 
      $('#change').css('color','#090'); 
      $('#puPrc').html('<img src="images/pu_prc_up.png">&nbsp;'); 
     } 
     if(data.change.charAt(0) == '-') { 
      $('#change').css('color','#D90000'); 
      $('#puPrc').html('<img src="images/pu_prc_dwn.png">&nbsp;'); 
     } 
     var ask = data.ask+" <small>x "+data.askSize+"</small>"; 
     var bid = data.bid+" <small>x "+data.bidSize+"</small>"; 
     var change = data.change+" ("+data.changePc+")"; 
     $('#ask').html(ask); 
     $('#lt').html(data.lastTrade); 
     $('#ytd').html(data.ytdReturn); 
     $('#bid').html(bid); 
     $('#dayHigh').html(data.dayHigh); 
     $('#dayLow').html(data.dayLow); 
     $('#prevClose').html(data.prevClose); 
     $('#vol').html(data.vol); 
     $('#yearHigh').html(data.yearHigh); 
     $('#yearLow').html(data.yearLow); 
     $('#change').html(change); 
     $('#stockName').html(n); 
     $('#sym').html(s.toUpperCase()); 
     $('#open').html(data.sOpen); 
    }) 
    .fail(function(e) { 
     alert("Unable to communicate with Yahoo! Finance servers. Please try again later."); 
    }) 

    $('#chart').html("<img src='http://chart.finance.yahoo.com/z?s="+s+"&t=3m&q=l&l=on&z=m'>"); 
    $('.popUp').bPopup(); 
} 

그것은 온 클릭을 사용하여 호출됩니다().

기능 자체가 제대로 일을하지만 난 단지 라인 트리거 할 :

$('.popUp').bPopup(); 

다른 모든이 완료되었습니다.

나는 $(document).ajaxStop(), $.ajaxStop() 사용하고 $.ajaxComplete() 나는 기능 위와 아래, 외부, 내부를 시도했지만 그것이 내가에 무엇을해야 얻을 수없는 것

$(document).ajaxComplete()!

작동 한 유일한 시간은 함수 밖이지만 페이지로드시에 실행되므로 분명히 발생하지 않을 것입니다. 함수가 완료 될 때만 실행되기를 원합니다.

누군가이 피클을 도와 주면 도와주세요!

+1

성공한 기능을 사용해 보셨습니까? –

+0

귀하의 코드 내에 ajaxStop 이벤트 사용 방법을 표시하지 않았습니다. – PeterKA

+0

ajaxStop, ajaxError, ajaxComplete는 글로벌 아약스 이벤트이므로 페이지의 모든 아약스 요청에 대해 실행됩니다. 그래서 이것은 최상의 솔루션이 아니므로 $ ('. popUp')를 추가해야합니다 .bPopup(); Ajax 체인의 가능한 모든 경우에 적용됩니다. –

답변

0

아약스 호출이 하나 뿐인 경우 .done.fail 처리기가 모두 완료 될 때 실행될 .always 처리기를 추가하려고합니다. 당신이 당신의 페이지에 둘 이상의 Ajax 호출이 있고 코드가 한 번 발사 할 모든 호출이 ajaxStop 이벤트를 사용하여 다음 완료하려면

.always(function() { 
    $('.popUp').bPopup(); 
}); 

.

$(function() { 
    $(document).on('ajaxStop', function() { 
     $('.popUp').bPopup(); 
    }); 
}); 
관련 문제