在 IE7 中,当在 .submittable 单击事件中调用此代码时,我必须单击提交按钮两次才能设置 orderCount 全局变量。或者,如果我在隐藏标签上设置属性值,我会得到相同的体验。对于要设置的元素值,我必须单击按钮两次。就像我需要给浏览器更多的时间来处理。有什么建议吗?谢谢你,内特
var orderCount = 0;
$(document).ready(function(){
$('.submittable').click(function(){
setOrderCount()
if ( orderCount == 0 ){
if (validateAcknowledment($(this).attr('id'))){
acknowledgeDay($(this).attr('id'));
}
}
});
});
function setOrderCount(){
// move this up to validate and do a setAtr
var school = $("#school").val();
var orderDate = $("#orderDate").val();
$.ajax({
url: "/fos/inventory/getPreviousWeeklyMenuOrders",
type: "GET",
dataType: 'json',
cache:false,
data: {school: school,
startWeekMonth: Date.parse(orderDate).getMonth(),
startWeekDay: Date.parse(orderDate).getDate(),
startWeekYear: Date.parse(orderDate).getFullYear()
},
success: function(data) {
orderCount = data.orderCount;
if(orderCount > 0){
showErrorMessage("You must Acknowledge prior Weekly Menu Order(s) before acknowledging this week's order", 200, 300);
}
}
});
最佳答案
令人惊奇的是,出现了这么多这样的问题。
默认情况下,AJAX 调用是异步的。您在第 4 行发起调用,然后在异步调用完成之前检查第 5 行的 orderCount。在您第二次单击时,您的异步调用现已完成,并且代码正在执行您认为在第一次单击时应该执行的操作。
您需要将 orderCount 检查逻辑移至匿名“成功”回调函数内,以便它仅在调用完成时执行。或者使ajax调用同步(jquery选项)
关于javascript - 在 IE7 中,如何在 jquery .click 事件期间使用 ajax 调用设置全局变量或元素值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655597/