dataTables的JS变量未更新

时间:2016-02-05 07:02:09

标签: javascript jquery datatables

//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 ...

问题出在哪里?

1 个答案:

答案 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
        }); 
    }
});