2016-02-05 79 views
0
//edit function 
$('#dataTable tbody').on('click', '.am-text-secondary', function() { 
    //get the id of selected row 
    var rowData = table.row($(this).parents('tr')).data(); 
    var updateId = rowData.id; 
    if(!updateId) 
     return;  
    console.log("updateId_1:"+updateId); 
    $.ajax({ 
     url: "getDataById.do?id="+updateId, 
     success: function (data) { 
      //assign the editModal 
     }     
    }); 
    $('#editModal').modal({ 
     relatedTarget: this, 
     width:600, 
     onConfirm: function(options) { 
      console.log("updateId_2:"+updateId); 
      $.ajax({ 
      //do something 
      }); 
     } 
    }); 
}); 

当第一触发编辑功能,updateId_1和updateId_2示出26.数据表JS变量不被更新

但随后第二触发器,updateId_1示出了27,updateId_2仍显示26 ...

问题在哪里?

+0

你使用哪种插件模式? –

回答

0

jQuery ajax执行异步HTTP(Ajax)请求。

您需要将async属性设置为false以按照定义的顺序执行语句。

默认情况下,所有请求都是异步发送的(即默认设置为true)。如果您需要同步请求,请将此选项设置为false。跨域请求和dataType:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。从jQuery 1.8起,不赞成使用带有jqXHR($ .Deferred)的async:false;您必须使用成功/错误/完整回调选项,而不是jqXHR对象的相应方法,例如jqXHR.done()或已弃用的jqXHR.success()。

$.ajax({ 
    url: "getDataById.do?id="+updateId, 
    async: false, 
    success: function (data) { 
     //assign the editModal 
    }     
}); 
$('#editModal').modal({ 
    relatedTarget: this, 
    width:600, 
    onConfirm: function(options) { 
     console.log("updateId_2:"+updateId); 
     $.ajax({ 
     //do something 
     }); 
    } 
}); 
+0

yeap,修正了问题! – rob