You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部分Win10系统IE11环境下Ajax请求出现pending挂起问题求助

问题根因

  • 代码存在语法错误:原代码for循环内的else分支缺少闭合大括号,整个for循环也没有对应闭合标记。IE11的JS解析引擎容错逻辑和现代浏览器差异较大,这类语法错误不会抛出显性报错,但会导致JSON字符串拼接逻辑完全混乱,最终生成的UserJson参数格式非法,IE11发送格式异常的POST请求时就会出现挂起问题。
  • 手动拼接JSON容错性极低:如果name、age字段存在双引号、转义字符、换行符等特殊内容,会直接破坏JSON结构,非法请求体触发IE11兼容性缺陷导致请求挂起。
  • IE11默认开启POST请求缓存,未配置禁用缓存规则时,重复发起同参数请求也可能触发挂起异常。

修复方案

首先修复语法错误,替换手动拼接JSON为原生JSON.stringify方法(IE8及以上原生支持,完全兼容IE11),修复后代码如下:

if (array.length > 0) {
    var str = JSON.stringify(array.map(function (item) {
        return {
            name: item.name,
            age: item.age
        };
    }));
    if (str !== "") {
        $.post('/Sys/User/SaveUser', { 'UserJson': str }, function (data) {
            // 业务回调逻辑
        }, 'json');
    }
}

可选兼容优化

如果修复后仍存在请求挂起问题,可换成完整$.ajax配置禁用IE11缓存:

$.ajax({
    url: '/Sys/User/SaveUser',
    type: 'POST',
    data: { 'UserJson': str },
    dataType: 'json',
    cache: false,
    success: function (data) {
        // 业务回调逻辑
    }
});

也可在服务端配置响应头Cache-Control: no-cache, no-store, must-revalidate,从服务端层面禁用IE缓存。

内容的提问来源于stack exchange,提问作者madamada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:09:02