application/xml oder text/xml content-Typen
Ich versuche eine XML-Antwort von einem servlet. Das servlet gibt einen Inhaltstyp "application/xml". Mithilfe von XmlHttpRequest, kann ich responseText, responseXml, aber nicht. Ich Frage mich, ob dieser etwas damit zu tun hatte, die mit dem content-Typ oder den Typ der Anforderung (ich bin ein BEKOMMEN)...?
Vielen Dank!
Habe ich reduziert, alle meine Dateien. Ich denke ich bin der Einstellung, dass alle korrekt. Hier ist, was ich habe:
------- HTML - - - - - - -
<html>
<head>
<title></title>
<script src="js/jboard_simple.js" type="text/javascript"> </script>
</head>
<body>
<div id="myDiv">
<h2>No results yet....</h2>
</div>
<form name="searchForm" id="searchForm_id">
<input type="text" name="searchString" id="searchString_id" />
<button type="button" onclick="loadXMLDoc()">Perform Search</button>
</form>
</body>
</html>
------- JavaScript -----------
function loadXMLDoc() {
document.getElementById("myDiv").innerHTML = "searching...";
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//Do something here...
alert(xmlhttp.responseText);
alert(xmlhttp.responseXml);
processSearchServletResponse(xmlhttp.responseText);
}
}
//Find teh search string
var searchString_el = window.document.getElementById('searchString_id');
var searchString = searchString_el.value;
alert('searchString: ' + searchString);
var searchUrl = "/SimpleServlet?searchString=" + searchString;
xmlhttp.open("GET", searchUrl, true);
xmlhttp.send();
}
function processSearchServletResponse(xmlTxt) {
document.getElementById("myDiv").innerHTML = xmlTxt;
}
- - - - - - - - Servlet - - - - - - - - -
import java.io.BufferedOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
public class SimpleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static Logger logger = LogManager.getRootLogger();
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
BufferedOutputStream bs = null;
String simpleResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>hi</root>";
try {
res.setContentType("text/xml");
res.setCharacterEncoding("UTF-8");
bs = new BufferedOutputStream(res.getOutputStream());
bs.write(simpleResponse.getBytes());
} catch (Exception ex) {
logger.error("JboardSearchServlet.service(): error = ", ex);
} finally {
bs.flush();
bs.close();
}
}
}
responseXml
werden kann pingelig. Versuchen Sie die Schritte, hier beschrieben, und Bericht zurück. Schlimmer Fall ist, können Sie auf parseresponseText
manuell.- Danke! Ich habe versucht, die Codierung auf UTF-8 und den content-type application/xml und text/xml, aber wie es scheint, in allen Kombinationen, responseXml ist immer undefiniert. Ich werde versuchen, die Analyse der responseText-auch manuell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oh dear! Ich habe gerade herausgefunden, mein ganzes problem (nachdem jemand anderes sah es).
War ich mit 'responseXml' anstatt 'responseXML'. Verdammt, diese Großbuchstaben =)