javascript - 在 IE7 中,如何在 jquery .click 事件期间使用 ajax 调用设置全局变量或元素值?

标签 javascript ajax internet-explorer jquery

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

相关文章:

asp.net - Jquery对话框每次打开都会增加输入控件的大小

javascript - 在 JavaScript 中捕获 "NullPointerExceptions"

javascript - chai things - should() 方法的完整列表

php - 使用 jQuery 和 PHP 发送和接收 AJAX 请求

ajax - 为什么 ie8 CORS/XDomainRequest 不发送 cookie?

php - 使用一个 AJAX 响应更新两个 div

internet-explorer - 让 xpath 2.0 函数在任何浏览器中工作

javascript - 如何在新窗口中提交表单,然后重定向父页面

javascript - 切换方法中未触发步骤选项

css - Font Squirrel 生成的字体未在 Internet Explorer 中加载