2011-01-19 5 views
0

안녕하세요, jquery에 문제가 있습니다. 몇 가지 ajax 호출을 실행 중이며 진행 대화 상자를 표시하려고합니다. 그러나 진행 대화 상자는 아약스 코드가 끝날 때까지 표시되지 않습니다 ... 아약스 요청 전에 명확하게 실행해야 할 때. 난 당신이 나를 죽이고 나를 도울 수 있기를 바랍니다 .. 덕분에 사전에Ajax 호출이 끝난 후 진행 대화 상자가 나타납니다.

function add() { 
    $('#loadingscreen').show(); //SHOWS UP AFTER ALL THE AJAX REQUESTS ARE FINISHED 
    $('.tdtrackname').each(function() { 
     $.ajax({ 
      cache: false, 
      async: false, 
      url: 'ajax/add.php?query=' + $(this).html(), 
      success: function(data) { 
      $('#divajax').html(data); 
      } 
     }); 
    }); 
} 
+0

을 요구? –

+0

내가 전화를해야하기 때문에. 다른 하나는 마지막 하나가 완료되기 전에 트리거됩니다. – robs

+0

그냥 시도해보십시오 ... 아마도 동기 호출이 모든 것을 차단하고 있습니까? (화면의 그림조차도)이 때문에 통화가 끝나면 대화 상자 만 보입니다. –

답변

1

이 시도 보내기 당신이 왜이 아닌 비동기 아약스를 사용하는 대화 진행을 원하는 경우에

function add() { 
    $('.tdtrackname').each(function() { 
     $.ajax({ 
      cache: false, 
      async: false, 
      url: 'ajax/add.php?query=' + $(this).html(), 
      beforeSend: function() { $('#loadingscreen').show(); }, 
      success: function(data) { 
      $('#divajax').html(data); 
      } 
     }); 
    }); 
} 
+0

이 시도, 똑같은 일이. 모든 Ajax 호출이 완료되면 로딩 화면이 나타납니다 (add() 함수가 실행 된 후 약 5 초). – robs

+0

질문에 대한 주석에서 언급했듯이 동기 호출은 DOM의 모든 작업을 차단할 가능성이 큽니다 . 최선의 방법은 데이터를 요청하고 처리하는 방법을 다시 생각하여 비동기 적으로 수행 할 수 있도록하는 것입니다. –

+0

그래,하지만 그 전에 뭔가를 차단하기로되어 있지? – robs

관련 문제