web-dev-qa-db-ja.com

私はこのエラー、XML解析エラー:構文エラーを取得し続けますが、それでもウェブサイトは正常に動作します

ウェブサイトの開発は初めてです。 web.xmlファイルでサーブレットをマップする必要があることを知っています。 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");
    }
});

問題は、サーブレットがまだ正常に実行されることです。 alert(out)は期待どおりに機能します。ブラウザにエラーが表示される理由を説明して、解決策を教えてください。

これが重複する質問である場合は、元の質問へのリンクを提供してください。

5
Robbie

私は最近同じ問題に遭遇しました。 jQueryはデータとdataTypeを正しく処理しているように見えましたが、代わりにFirefoxが構文エラーを返していたため、コードが意図したとおりに実行されたにもかかわらずコンソールにエラーが出力される理由を説明しました。

開発者コンソールを見ると、Firefoxがプレーンテキストデータを別の形式(おそらくXML)として解釈していることがわかります。 FirefoxはデータをXMLとして解析するのに疲れますが、それが有効なXMLではないため、コンソールに「構文エラー」が出力されるため、できません。

この問題を解決するには、サーバーを編集して次のヘッダーを返しました。

Content-Type: "text/plain"

これはFirefoxの問題であるように見えました。Chromeはこの問題に遭遇しませんでした。この問題に関係するFirefoxのバグがあります。

ソース

18
Cholowao

少なくともファイルシステムからファイルを要求する場合、Firefox 70にはまだ問題が存在します。 jqueryは不要です。動作はプレーンXMLHttpRequestで再現できます。 overrideMimeTypeの前にsendメソッドを呼び出すことで解決しました。私には非常にきれいな解決策のように見えます。例:

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();
1
tglas