ウェブサイトの開発は初めてです。 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)は期待どおりに機能します。ブラウザにエラーが表示される理由を説明して、解決策を教えてください。
これが重複する質問である場合は、元の質問へのリンクを提供してください。
私は最近同じ問題に遭遇しました。 jQueryはデータとdataTypeを正しく処理しているように見えましたが、代わりにFirefoxが構文エラーを返していたため、コードが意図したとおりに実行されたにもかかわらずコンソールにエラーが出力される理由を説明しました。
開発者コンソールを見ると、Firefoxがプレーンテキストデータを別の形式(おそらくXML)として解釈していることがわかります。 FirefoxはデータをXMLとして解析するのに疲れますが、それが有効なXMLではないため、コンソールに「構文エラー」が出力されるため、できません。
この問題を解決するには、サーバーを編集して次のヘッダーを返しました。
Content-Type: "text/plain"
これはFirefoxの問題であるように見えました。Chromeはこの問題に遭遇しませんでした。この問題に関係するFirefoxのバグがあります。
少なくともファイルシステムからファイルを要求する場合、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();