大家好,这是我在这个论坛上的第一篇文章。
我有这个功能
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”变量在最后被傀儡,但警报被触发之前
任何人都知道如何解决它?
提前致谢。
答案 0 :(得分:0)
AJAX是异步的 - 它下面的代码可能在AJAX调用完成之前运行。
答案 1 :(得分:-1)
尝试在您的ajax调用中使用此async: false
:
$.ajax({
type: 'POST',
url: BASE + '/save_list_presence',
async: false,
...
默认情况下,所有请求都是异步发送的(即设置为 默认为true)。如果需要同步请求,请将此选项设置为 假。跨域请求和dataType:“jsonp”请求没有 支持同步操作。请注意,同步请求可能 暂时锁定浏览器,在请求时禁用任何操作 很活跃。