//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。
但是第二次触发,updateId_1显示27,updateId_2仍然显示26 ...
问题出在哪里?
答案 0 :(得分:0)
jQuery ajax
执行异步HTTP(Ajax)请求。
您需要将async
属性设置为false
,以按照定义的顺序执行语句。
默认情况下,所有请求都是异步发送的(默认情况下设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和dataType:" jsonp"请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。从jQuery 1.8开始,不推荐使用async:false和jqXHR($ .Deferred);您必须使用success / error / complete回调选项而不是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
});
}
});