JQuery每个函数都带有ajax循环

时间:2013-04-18 19:18:18

标签: jquery ajax loops alert each

大家好,这是我在这个论坛上的第一篇文章。

我有这个功能

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)”在没有消息的情况下触发,在调试时我看到它的火然后每个和ajax执行后,“msg”变量在最后被傀儡,但警报被触发之前

任何人都知道如何解决它?

提前致谢。

2 个答案:

答案 0 :(得分:0)

AJAX是异步的 - 它下面的代码可能在AJAX调用完成之前运行。

答案 1 :(得分:-1)

尝试在您的ajax调用中使用此async: false

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

来自jQuery.ajax() API Docs

  

默认情况下,所有请求都是异步发送的(即设置为   默认为true)。如果需要同步请求,请将此选项设置为   假。跨域请求和dataType:“jsonp”请求没有   支持同步操作。请注意,同步请求可能   暂时锁定浏览器,在请求时禁用任何操作   很活跃。