gpt4 book ai didi

javascript - 为什么IE和Chrome中的ajax错误不同?

转载 作者:行者123 更新时间:2023-12-03 09:14:46 25 4
gpt4 key购买 nike

让我们以下面的代码为例。

<script>
function abc()
{
$.ajax({
type: "GET",
url: "https://zx/abc/def",
timeout: 6000,
dataType: "jsonp",
error: function(h, j, e) {
console.log(h+" "+j+" "+e);
}
})
}
</script>

<button onclick="abc()">Start Call</button>

上面使用的网址是不存在/无效的网址。现在,让我们看看上述代码在不同浏览器中的输出是什么:
Chrome,firefox, IE 11 ->   [object Object]  timeout  timeout

IE 8,9,10 -> [object Object] parsererror Error: jQuery111308894510177821542_1433915740650 was not called

那么,为什么我们会得到不同的错误消息呢?

最佳答案

我们从哪里开始。

我们的答案是针对初次使用Ajax的程序员还是经验丰富的程序员? -这实际上是在问什么?

简单的答案是显而易见的。浏览器是不同的,因此它们以不同的方式对错误使用react,并传播到jquery,最终导致两个不同的错误消息。
由于jquery封装了非常依赖浏览器的javascript引擎,因此它并不总是能够以完全跨浏览器的方式运行。

但是,那真的不是您现在要问的吗?
您可能想知道出了什么问题。

一种浏览器指出您超时,另一种表示浏览器无法解析收到的数据,并且无法调用jquery函数,这是有责任的。

您可能需要阅读以下相关问题:
Callback - Parseerror JSONP via jQuery AJAX

恕我直言,最可能的原因是您从服务器接收的数据实际上不是jsonp ..类型,或者它不完整或损坏。
可能是文字?还是xml?或者只是简单的json。

尝试将类型更改为文本,然后查看错误消息是否更改。

  • ,但是...为什么chrome无法提供与IE相同的错误?

  • 好吧,如果我对数据实际上不是正确的jsonp是正确的,则可能与jquery“解析” json时发生的情况有关。
    jQuery将使用内置方法的浏览器(如果可用),可能的原因是使用chrome解析数据,但是当出现问题时,它会超时
  • 在哪里可以获取文档?

  • 这么多地方都有一些零碎的文档来理解这一点。要针对各种数据和可能的错误进行一般性解释,请分别引用Jquery源代码以及I.E和Chrome的javascript引擎文档。

    读取可能会花费很长时间,因为不同版本的I.E和Chrome的行为会有所不同。在过去,我们只是为了使最简单的跨浏览器功能正常工作而必须学习这一点。 jQuery隐藏了大多数差异,这是我对jQuery成功的最佳选择。我们不再需要知道所有那些细微的差异。我们只需要知道出现问题时在哪里看。

    一个好的起点是这里: http://api.jquery.com/jquery.parsejson/

    Where the browser provides a native implementation of JSON.parse,

    关于javascript - 为什么IE和Chrome中的ajax错误不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748577/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com