1
嗨我嘗試在Jetty上運行一個應該響應ajax調用的java服務器。不幸的是,當我用ajax調用它時,響應似乎是空的。當我打電話給http://localhost:8081/?id=something時,我得到一個答案。Jetty Servlet對Ajax的響應總是爲空
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請求和來自服務器的響應。 – ZeissS 2010-05-12 09:33:46
什麼是'服務器'? – Bozho 2010-05-12 09:34:11
我使用螢火蟲,在那裏我看到答案是空的。獲取響應的編號爲200,因爲我這樣設置,至少螢火蟲能夠識別。在Javascript中,我仍然有req.status = 0 服務器是org.eclipse.jetty.server ......這裏是進口: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import org.eclipse.jetty.server。服務器; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; – chris 2010-05-12 10:07:40