19

我正在尝试使用 jQuery.ajax() 来获取一些 html,但 Firefox 给我一个“文档元素后的垃圾”错误消息。正如这里这里所解释的,问题似乎是 Firefox 期望来自服务器的 XML,并且当它没有正确解析时,它会抛出错误。这是我的ajax代码:

jQuery.ajax({
    url: name,
    dataType: "html",
    success: function(result) {
        console.log(result);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    }
});

服务器返回带有这些响应标头的 html:

Accept-Ranges   bytes
Content-Length  2957
Last-Modified   Tue, 02 Jul 2013 16:16:59 GMT

请注意,没有内容类型标头。我确信添加一个可以解决问题,但这不是一种选择。

真正的问题是 Firefox 似乎忽略了 ajax 调用中的 dataType: 参数。我也尝试添加 contentType: 并接受:参数,但它没有帮助。

我在这里想念什么?如何强制 Firefox 将响应作为纯文本处理?

4

3 回答 3

0

HTML 响应看起来如何?如果还没有,我会尝试确保响应以第一行的 doctype 声明开头,如<!doctype html>.

运气好的话,这可以让 Firefox 的内容类型检测走上正轨。

于 2013-12-11T14:02:35.153 回答
0

上面的代码工作正常。

您可以使用以下代码。我注意到您的文件应该以 .txt 格式保存。

 jQuery.ajax({
    url: "https://www.w3schools.com/jquery/demo_test.txt",
    dataType: "html",
    success: function(result) {
        console.log(result);
        const parser = new DOMParser();
        const res = parser.parseFromString(result, 'text/html');
        console.log(res);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    }
});

我已经在 Firefox 中测试了这段代码,它工作正常。

在此处输入图像描述

于 2022-02-07T18:16:26.817 回答
-3

好的,所以你可以尝试"HTML"代替"html".

于 2013-12-11T13:03:19.683 回答