我是开发网站的新手。 我知道我必须在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仍然可以正常运行。警报(按预期)工作。请解释为什么浏览器显示错误,并告诉我解决方案。
如果这是重复问题,请提供原始问题的链接。
答案 0 :(得分:6)
我最近遇到了同样的问题。 jQuery似乎可以正确处理数据和dataType,但是Firefox返回了语法错误,这说明了为什么代码按预期执行但仍向控制台输出错误。
如果在开发人员控制台中查看,则可以看到Firefox将纯文本数据解释为另一种格式(可能是XML)。 Firefox厌倦了将数据解析为XML,但不能这样做,因为它不是有效的XML,这会导致“语法错误”被打印到控制台。
对我来说,解决此问题的方法是编辑服务器,因此它返回以下标头:
Content-Type: "text/plain"
这似乎只是Firefox的问题,Chrome没有遇到此问题。这里有一个Firefox错误,似乎可以解决这个问题。
答案 1 :(得分:0)
至少在从文件系统请求文件时,该问题在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();