2013-04-18 1 views
1

안녕하세요,이 사람은이 포럼에서 저의 첫 번째 게시물입니다.JQuery 아약스 루프가있는 각 기능

나는이 기능을

function TestePresenca(){ 
var msg = '' 
$('#teste tbody tr').each(function(){ 
    var MemberId; 
    var ClassId; 
    var PresenceDate; 
    var OClasse; 

    var DataPre = $('#data_presenca').val(); 
    var TotBiblia = $('#tot_biblia').val(); 
    var TotOferta = $('#tot_ofertas').val(); 

    $(this).find('td').each(function(){ 
     if($(this).index() == 0){ 
      MemberId = $(this).text(); 
     } 

     if($(this).index() == 3){ 
      $(this).closest('tr').find("select").each(function(){ 
       ClassId = this.value; 
      }) 
     } 

     if($(this).index() == 4){ 
      OClasse = $(this).text(); 
     }   
    }); 

    $.ajax({ 
     type: 'POST', 
     url: BASE + '/save_list_presence', 
     data: {pMemberId: MemberId, pClassId: ClassId, pOClasse: OClasse, pDataPre: DataPre, pTotBiblia: TotBiblia, pTotOferta: TotOferta}, 
     success: function(retorno){ 
      msg += retorno; 
     }, 
     error: function(xhr, ajaxOptions, thrownError) { 
      alert('Erro!'); 
     } 
    }); 
}); 
alert(msg);} 

내 문제는 내가 그 불이 다음 각과 아약스 후 실행을 참조 디버그 시간에 "경고 (MSG)"메시지없이 화재,하고 "MSG"입니다 변수가 끝에 pupulated지만, 경고는 전에 해고됐다.

누구든지 어떻게 고칠 수 있습니까?

미리 감사드립니다.

+0

비동기의 오해 : P –

+0

입니다. 비동기 호출이기 때문에 –

+0

Ajax는 비동기식입니다. 당신은 동기화하지 않고 그것을 고칠 수 없습니다 (이것은 끔찍한 생각입니다). –

답변

-1

는 Ajax 호출이 async: false을 사용해보십시오 : 기본적으로 jQuery.ajax() API Docs

에서

$.ajax({ 
     type: 'POST', 
     url: BASE + '/save_list_presence', 
     async: false, 
     ... 

, 모든 요청 (즉, 이것은 기본적으로 사실 로 설정) 비동기 전송됩니다. 동기 요청이 필요한 경우이 옵션을 false로 설정하십시오. 도메인 간 요청 및 데이터 유형 : "jsonp"요청은 동기 작업을 지원하지 않습니다. 동기 요청은 브라우저 일시적으로 잠글 수 있으며 요청이 인 동안 모든 작업을 비활성화 할 수 있습니다.

+0

This isn 정말 해결책이 아닙니다. – Blender

+0

이것은 매력처럼 작동했습니다. 감사. 하지만 최선의 해결책이 아니라면 누군가 올바른 방향을 제시 할 수 있습니까? –

+0

나는 json을 만들기 위해 새로운 함수를 만들 함수를 바꾸려고했다. 그리고이 json을 php 코드로 보내면 PHP에서 루프를 만들고 jQuery에 내 전체 메시지를 보여줄 것이다. –

0

AJAX는 비동기식입니다. AJAX 호출이 끝나기 전에 실행되는 코드는 비동기식입니다.