78

当我进行一些 Ajax 调用时,我不断收到此错误...

它甚至可能与地理编码有关,但我真的不知道如何捕获错误以显示对用户有用的内容......甚至如何解决问题,因为它似乎只是在引用某种指针或其他东西: S 0x2ef3

SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3,由于错误 00002ef3,无法完成操作。

图像可能比错误消息更有帮助:

在此处输入图像描述

有什么想法吗?

我的代码在 1 秒内触发 10 个 ajax 调用,由地理编码服务器端处理。

该错误间歇性地出现。有时我得到地理编码的结果,有时我得到那个错误。我会说我有10%的时间得到它。它完全阻止了 ajax 调用在 jQuery 中触发我的错误处理程序。

4

13 回答 13

30

这是对我有用的修复程序。与您的 json 数据一起发送的 mime 或错误字符集会导致该错误。添加这样的字符集以帮助它避免混淆:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
  ...
  }
});

参考:

Jquery - 如何让 $.post() 使用 contentType=application/json?

由于错误 c00ce56e 无法完成操作

于 2013-04-01T17:49:06.000 回答
23

我们也遇到了类似的问题。但是,按照前面的评论设置字符集并没有帮助。我们的应用程序每 60 秒发出一次 AJAX 请求,而我们的网络服务器 nginx 在 60 秒时发送 Keep-Alive 超时。

我们通过将保持活动超时值设置为 75 秒来解决此问题。

这就是我们认为正在发生的事情:

  1. IE 每 60 秒发出一次 AJAX 请求,并在请求中设置 Keep-Alive。
  2. 同时 nginx 知道 Keep-Alive 超时值被 IE 忽略了,所以它启动 TCP 连接关闭过程(在 FF/Chrome 的情况下这是由客户端启动的)
  3. IE 收到之前发送的请求的关闭连接请求。由于 IE 不希望这样做,因此它会引发错误并中止。
  4. 即使连接已关闭,nginx 似乎仍在响应请求。

Wireshark TCP 转储会提供更清晰的信息,我们的问题已解决,我们不希望在此问题上花费更多时间。

于 2013-07-19T09:10:12.753 回答
11

我收到了同样的错误 ( SCRIPT7002: XMLHttpRequest: Network Error 0x80004004, Operation aborted),在我们的例子中是因为 JavaScript 的同源策略。

我们的 Web 应用程序正在端口 8080 上对我们的服务器进行 JQuery AJAX 调用。该调用被拦截并通过 SSL 重新路由(由于服务器规则要求传入流量使用 SSL)。

一旦我们通过 SSL 端口加载我们的 Web 应用程序,问题就得到了解决。

于 2013-10-08T19:23:03.517 回答
2

我遇到了这个问题,一个返回一些 JSON 的 AJAX Post 请求会失败,最终返回 abort,并带有:

SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3

控制台中的错误。在其他浏览器(Chrome、Firefox、Safari)上,完全相同的 AJAX 请求很好。

跟踪我的问题 - 调查显示响应缺少状态代码。在这种情况下,它应该是 500 内部错误。这是使用需要显式设置错误代码的服务堆栈作为 C# Web 应用程序的一部分生成的。

IE 似乎将连接打开到服务器,最终超时并“中止”请求;尽管收到内容和其他标题。

也许 IE 如何处理帖子中的标题存在问题。

更新 Web 应用程序以正确返回状态代码解决了该问题。

希望这对某人有帮助!

于 2015-09-22T01:12:48.290 回答
2

这个问题发生在我的项目中,因为使用长 xml 字符串作为参数值的 ajax GET 调用。通过以下方法解决:像这样将其作为对 Java Spring MVC 控制器类方法的 ajax 后调用。

$.ajax({
    url: "controller_Method_Name.html?variable_name="+variable_value,
    type: "POST",
    data:{ 
            "xmlMetaData": xmlMetaData // This variable contains a long xml string
    },
    success: function(response)
    {
        console.log(response);
    }
  });

在 Spring MVC Controller 类方法内部:

@RequestMapping(value="/controller_Method_Name")
  public void controller_Method_Name(@RequestParam("xmlMetaData") String metaDataXML, HttpServletRequest request)
{
   System.out.println(metaDataXML);
}
于 2016-03-03T09:49:40.847 回答
1

我有一段时间遇到此错误并找到了解决方法。此修复适用于 Asp.net 应用程序,奇怪的是它仅在 IE 非兼容模式下失败,但在 Firefox 和 Crome 中有效。为所有/特定用户授予对 webservice 服务文件夹的访问权限解决了该问题。

在 web.config 文件中添加以下代码:

 <location path="YourWebserviceFolder">
  <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
  </system.web>
 </location>
于 2015-03-05T06:56:59.597 回答
1

IE11在尝试使用以下方式上传文件时收到上述错误后,我偶然发现了这个问题和答案XMLHttpRequest

var reqObj = new XMLHttpRequest();

//event Handler
reqObj.upload.addEventListener("progress", uploadProgress, false);
reqObj.addEventListener("load", uploadComplete, false);
reqObj.addEventListener("error", uploadFailed, false);
reqObj.addEventListener("abort", uploadCanceled, false);

//open the object and set method of call (post), url to call, isAsynchronous(true)
reqObj.open("POST", $rootUrlService.rootUrl + "Controller/UploadFiles", true);

//set Content-Type at request header.for file upload it's value must be multipart/form-data
reqObj.setRequestHeader("Content-Type", "multipart/form-data");

//Set header properties : file name and project milestone id
reqObj.setRequestHeader('X-File-Name', name);

// send the file
// this is the line where the error occurs
reqObj.send(fileToUpload);

删除线reqObj.setRequestHeader("Content-Type", "multipart/form-data");解决了问题。

注意:此错误在其他浏览器中的显示方式非常不同。即 Chrome 显示类似于连接重置的内容,类似于 Fiddler 报告的内容(由于连接突然关闭而导致的空响应)。

此外,仅当从不同于WebServer(本地主机上没有问题)的机器上完成上传时才会出现此错误。

于 2016-01-27T14:39:37.057 回答
1

我只想添加为我解决此问题的方法,因为它与上述所有答案都不同。

导致问题的 ajax 调用试图传递一个空的数据对象。看来 IE 不喜欢这样,但其他浏览器不介意。

为了解决这个问题,我只是data: {},从 ajax 调用中删除了。

于 2016-02-23T17:11:16.307 回答
1

随着 Apache 2 的更改KeepAliveTimeout ,将其设置为 60 或更高

于 2016-03-15T12:06:49.670 回答
0

将虚拟主机中 KeepAliveTimeout 的指令提高到 60 为我解决了这个问题。

于 2014-09-29T01:07:40.657 回答
0

在我的asp.net项目中遇到了同样的问题,最后我发现问题是目标函数不是静态的,我把关键字静态后问题就解决了。

[WebMethod]
public static List<string> getRawData()
于 2016-03-29T05:06:05.340 回答
0

[解决了]

我今天才观察到这个错误,但对我来说错误代码是不同的。

SCRIPT7002:XMLHttpRequest:网络错误 0x2efd,由于错误 00002efd,无法完成操作。

它是随机发生的,并非一直发生。但它注意到的是,如果它用于后续的 ajax 调用。所以我在 ajax 调用之间放了 5 秒的延迟,它解决了。

于 2016-11-29T08:47:18.757 回答
0

如果这些解决方案都不够“清晰”,那么基本上 IE/Edge 无法正确解析 AJAX 调用的“数据”字段。您很可能正在发送“编码”JSON 对象。

什么失败: "data": "{\"Key\":\"Value\"}",

什么有效: "data":'{"Key":"Value"}'

于 2018-11-07T15:54:26.160 回答