我正在尝试发出一个AJAX请求(来自New.html)并在servlet中处理该请求(在PropertyReader.java中)。这里为获取请求,我只是尝试打印到控制台,看看我是否能够在doGet()方法中获取AJAX请求,但没有任何内容被打印。表示不会调用doGet方法。我点击了html页面中的按钮发出了AJAX请求。请帮我。我错过了什么我不确定。
我的Servlet:PropertyReader.java
package org.jboss.samples.webservices;
public class PropertyReader extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PropertyReader() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("************getting GET request");
}
}
我的带有AJAX调用的html页面:New.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Status Report</title>
<Script>
function getIt()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert("ready");
document.getElementById("fill").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/PropertyReader?property="+document.getElementById("property").value,true);
xmlhttp.send();
alert("property2="+document.getElementById("property").value);
return false;
}
</script>
</head>
<body>
Hi !!
<a href="pdf">pdf</a>
<form >
<input id="property" type="text" width="50">
<input type="button" value="Get It!" onclick="getIt();">
</form>
<div id="fill" style="font:20px; color:red;">
who am i?
</div>
</body>
</html>
我的DD: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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>TestWebb</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>New.html</welcome-file>
</welcome-file-list>
<servlet>
<display-name>HelloWorld</display-name>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>org.jboss.samples.webservices.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>FileServer</display-name>
<servlet-name>FileServer</servlet-name>
<servlet-class>org.jboss.samples.webservices.FileServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileServer</servlet-name>
<url-pattern>/pdf</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>PropertyReader</display-name>
<servlet-name>PropertyReader</servlet-name>
<servlet-class>org.jboss.samples.webservices.PropertyReader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PropertyReader</servlet-name>
<url-pattern>/PropertyReader/*</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:1)
从网址中删除第一个“/”然后它可能正常工作 像
xmlhttp.open("GET","PropertyReader?property="+document.getElementById("property").value,true);
我认为如果你正确地给出所有文件名,它将正常工作
或者您也可以使用其他http状态进行检查
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert("ready");
document.getElementById("fill").innerHTML=xmlhttp.responseText;
}
else if(xmlhttp.status == 400)
{
alert ('bad status');
}
// for other status also for checks working
}
答案 1 :(得分:0)
可能是xmlhttp.open调用中的问题。 尝试使用绝对路径,即http:// ......为url而不是相对url。
另外,为了检查ajax是否正在发生,您可以通过按F12键并监控网络部分来使用浏览器中的开发人员工具。