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 parse responseText 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.
InformationsquelleAutor Annie B | 2011-07-11
Schreibe einen Kommentar