我不断收到此错误,XML Parsing error: syntax error 但网站仍然运行良好

Posted

技术标签:

【中文标题】我不断收到此错误,XML Parsing error: syntax error 但网站仍然运行良好【英文标题】:I keep getting this error, XML Parsing error: syntax error but still the website runs fine 【发布时间】:2018-12-02 15:27:34 【问题描述】:

我是开发网站的新手。 我知道我必须在 web.xml 文件中映射 servlet。 web.xml文件是这样的

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name>TestApp</display-name>
    <welcome-file-list>
     <welcome-file>index.html</welcome-file>
     <welcome-file>index.htm</welcome-file>
     <welcome-file>index.jsp</welcome-file>
     <welcome-file>default.html</welcome-file>
     <welcome-file>default.htm</welcome-file>
     <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
     <servlet-name>Serve</servlet-name>
     <servlet-class>Serve</servlet-class>
    </servlet>
    <servlet-mapping>
     <servlet-name>Serve</servlet-name>
     <url-pattern>/TestApp</url-pattern>
    </servlet-mapping>
   </web-app>

但是当我调用 jquery $.ajax() 函数时,我得到了这个错误。

XML 解析错误:语法错误 地点:http://localhost:8080/TestApp/Serve 第 1 行第 1 列:

AJAX 调用是

    $.ajax(
    url: "Serve",
    type: "POST",
    success: function(out)
        alert(out);
    ,
    error: function()
        alert("No");
    
);

问题是 servlet 仍然运行良好。警报(出)按预期工作。请解释浏览器显示错误的原因并告诉我解决方案。

如果这是一个重复的问题,请提供原始问题的链接。

【问题讨论】:

可能是您在file:/// 中运行您的应用程序,因为这是可能发生的ajax 请求。如果你已经安装了nodejs,你可以安装一个服务器并查看控制台日志 【参考方案1】:

我最近遇到了同样的问题。 jQuery 似乎正确地处理了数据和 dataType,但实际上是 Firefox 返回了语法错误,这解释了为什么您的代码按预期执行但仍然向控制台打印错误。

如果您查看开发者控制台,您可以看到 Firefox 正在将纯文本数据解释为另一种格式(可能是 XML)。 Firefox 厌倦了将数据解析为 XML,但不能,因为它不是有效的 XML,导致“语法错误”被打印到控制台。

为我解决此问题涉及编辑服务器,使其返回以下标头:

Content-Type: "text/plain"

这似乎只是 Firefox 的问题,Chrome 没有遇到此问题。这里有一个 Firefox 错误,似乎涉及到这个问题。

source

【讨论】:

谢谢。正如你所说,我真的使用 Firefox 作为我的测试浏览器。再次感谢。【参考方案2】:

问题在 Firefox 70 中仍然存在,至少在从文件系统请求文件时。不需要 jquery,可以使用普通的XMLHttpRequest 重现该行为。在send 之前调用它的overrideMimeType 方法为我解决了这个问题。对我来说,这似乎是一个非常干净的解决方案。示例:

var xhr = new XMLHttpRequest();
xhr.open("GET", window.location, true);
xhr.overrideMimeType("text/html");
xhr.onreadystatechange = function()

    if (xhr.readyState == 4) alert(xhr.responseText);

xhr.send();

【讨论】:

干得漂亮!做得好,谢谢。我一直在尝试(通过 XHR)检索 .mjs 文件,而 Firefox 莫名其妙地返回:XML Parsing error: syntax error。这一行:xhr.overrideMimeType('application/javascript') 解决了这个问题。 可以确认,Firefox v77.0.1 上仍然会出现这种情况。 对我来说,responseType 也可以。我将它设置为"text",现在我不必摆弄 mime 类型了。 因此这可能是 Firefox 处理响应类型的问题,因为 mime 类型取决于响应类型。【参考方案3】:

所以要专门回答OP,下面的代码应该可以让错误消失。

(将'application/xml' 替换为所需的MIME Type。例如,'application/json' 是最常见的。)

    $.ajax(
    url: "Serve",
    type: "POST",
    beforeSend: function (xhr) 
       xhr.overrideMimeType('application/xml');  // this line prevents XML parsing error with firefox
    ,
    success: function(out)
        alert(out);
    ,
    error: function()
        alert("No");
    
);

【讨论】:

以上是关于我不断收到此错误,XML Parsing error: syntax error 但网站仍然运行良好的主要内容,如果未能解决你的问题,请参考以下文章

Wavefront OBJ Parsing - 为啥我不断收到不正确的数据作为输出?

我不断收到 StaticWebAssets.xml 构建错误,但我不想要它们

为啥我不断收到此空指针未知来源错误?

当我尝试输入 phpunit 时,我不断收到此错误

运行此代码时不断收到此错误

使用 HealthKit 检索 SleepAnalysis 后,我仍然收到此 Authorization Not Defined 错误