【发布时间】:2010-05-12 09:27:27
【问题描述】:
您好,我尝试在 Jetty 上运行一个 java 服务器,它应该响应一个 ajax 调用。不幸的是,当我用 ajax 调用它时,响应似乎是空的。当我拨打http://localhost:8081/?id=something 时,我会得到答复。
Java 服务器:
public class Answer extends AbstractHandler
{
public void handle(String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
String id = request.getParameter("id");
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.setContentLength(19+id.length());
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write("<message>"+id+"</message>");
//response.setContentType("text/html;charset=utf-8");
response.flushBuffer();
baseRequest.setHandled(true);
}
public static void main(String[] args) throws Exception
{
Server server = new Server(8081);
server.setHandler(new Answer());
server.start();
server.join();
}
}
js和html:
<html>
<head>
<script>
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "validate?id=" + encodeURIComponent(idField.value);
if (typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("GET", "http://localhost:8081?id=fd", true);
req.onreadystatechange = callback;
req.send(null);
}
function callback() {
if (req.readyState == 4) {
if (req.status == 200) {
var message = req.responseXML.getElementsByTagName("message")[0];
document.getElementById("userid").innerHTML = "message.childNodes[0].nodeValue";
}
}
}
</script>
</head>
<body onload="validate('foobar')">
<div id="userid">hannak</div>
</body>
</html>
我实际上不知道我在这里做错了什么。也许有人有个好主意。
问候克里斯
【问题讨论】:
-
您可以使用 FireBug (Firefox Addon) 来调试 ajax 请求和来自服务器的响应。
-
我用萤火虫,在那里我看到答案是空的。 Get 响应的编号为 200,因为我是这样设置的,至少 firebug 可以识别。在 Javascript 中我仍然有 req.status = 0 服务器是 org.eclipse.jetty.server ......这里是导入: import javax.servlet.http.HttpServletRequest;导入 javax.servlet.http.HttpServletResponse;导入 javax.servlet.ServletException;导入 java.io.IOException;导入 org.eclipse.jetty.server.Server;导入 org.eclipse.jetty.server.Request;导入 org.eclipse.jetty.server.handler.AbstractHandler;