jQuery更改和Ajax方法在Windows上的IE和Firefox上间歇性失败

jQuery更改和Ajax方法在Windows上的IE和Firefox上间歇性失败,jquery,ajax,windows,internet-explorer,firefox,Jquery,Ajax,Windows,Internet Explorer,Firefox,我无法在我的测试环境中复制此错误,但我们经常接到客户的电话,他们声称,本质上,一个select menu onChange事件无法填充第二个菜单。他们对第一个菜单进行选择,它挂起而不生成第二个菜单来完成表单 我使用分配给第一个select菜单的change方法在服务器上运行Ajax请求,以获取第二个菜单,该菜单根据第一个菜单中选择的内容填充值。我正在运行jQuery1.7.1,该方法在我的所有测试环境中都成功 这些呼叫者在Windows机器上使用Firefox和IE;到目前为止,没有来自Mac用

我无法在我的测试环境中复制此错误,但我们经常接到客户的电话,他们声称,本质上,一个select menu onChange事件无法填充第二个菜单。他们对第一个菜单进行选择,它挂起而不生成第二个菜单来完成表单

我使用分配给第一个select菜单的change方法在服务器上运行Ajax请求,以获取第二个菜单,该菜单根据第一个菜单中选择的内容填充值。我正在运行jQuery1.7.1,该方法在我的所有测试环境中都成功

这些呼叫者在Windows机器上使用Firefox和IE;到目前为止,没有来自Mac用户或使用其他浏览器的Windows用户的呼叫。我很想从他们那里得到更多的信息,但这些用户甚至对如何在浏览器中查找错误报告都缺乏经验。我已经实施了StackOverflow和其他板上发布的其他解决方案中推荐的以下修复,但仍然没有成功:

在Ajax调用中禁用缓存属性 使用$'.selectMenu.change方法代替$'.selectMenu.bind'change',函数{…}; 强制在Ajax路径中使用HTTPS,因为这是一种安全形式 检查并确保Ajax调用的同源策略 确保change方法以返回false结束,以防止jQuery冒泡事件 这是我的密码。它相当简单,并且与如何实现jQuery更改和ajax方法的标准示例一致。有两个选择菜单。选择第一个菜单时,它会在服务器上运行一个Ajax请求,以根据第一个菜单中选择的值获取第二个菜单的内容

$('#Sections').change(function() {
    $('#sectionsIndicator').css('display', 'block');
    $.ajax({
        async: true,
        type: 'post',
        url: 'https://example.com/getCategoriesMenu',
        data: { id: $('#Sections').val() },
        dataType: 'html',
        cache: false,
        success: function(data) {
            $('#_categories').html(data);
            $('#sectionsIndicator').css('display', 'none');
            preview.update(); //render a preview of the whole form
        },
        error: function(xhr, status, error) {
            var msg = "It appears an error has occurred while trying to update the Categories menu.";
            msg += " Please try adjusting your security settings or refreshing this page before attempting to post this form.";
            msg += " [ Status: " + status + "   Error: " + error + " ]";
            alert(msg);
        }
    });
    return false;
});
成功的Ajax查询的数据值是一个HTML菜单。_类别选择器对应于环绕在第二个选择菜单周围的


如上所述,我无法在Mac、Windows XP、Windows Vista和Windows 7环境的所有主要浏览器上生成错误。但我不能否认,用户在尝试进行选择时会报告菜单暂停。

您在msg+=之后缺少分号,请在尝试发布此表单之前尝试调整安全设置或刷新此页面。这可能会导致一个问题

,当我将代码从站点转移到这篇文章时,这个问题很糟糕。我省略了确切的错误消息,以使代码示例不知道它所在的站点。考虑当前版本中的分号。