안녕하세요 저는 아약스 호출에 응답해야하는 Jetty에서 Java 서버를 실행하려고합니다. 불행히도 응답은 아약스로 호출 할 때 비어있는 것 같습니다. 내가 http://localhost:8081/?id=something라고 전화하면 나는 대답을 얻는다.Ajax에 대한 제티 서블릿 응답은 항상 비어 있습니다.
자바 서버 :
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
'서버'란 무엇입니까? – Bozho
나는 방화 광을 사용하며, 그 대답은 비어 있음을 알았다. Get 응답은 숫자 200을 가지고 있는데, 적어도 그것을 설정했기 때문에, 적어도 방화범이 그것을 인식합니다. 자바 스크립트에서 나는 여전히 req.status = 0을 가지고 있습니다. 서버는 org.eclipse.jetty.server입니다. 다음은 가져 오기입니다 : import javax.servlet.http.HttpServletRequest; 가져 오기 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