2016-02-05 57 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