tmp = oXmlHttp.responseText;可以将jsp文件里面的内容读出来.那样的话,在文件头会产生很多空行,所以我干脆用Servlet来写,可:
http://localhost:8080/id_check?id=liangj123里面输出来的数据用oXmlHttp.responseText读不到?是为什么?

解决方案 »

  1.   

    楼上说的对,你的SERVLET里边必须象这样输出response.getWriter().print("hello,how are you")
    如果返回数据多,用XML封装比较好,
    package book.chat;import java.sql.Connection;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import book.chat.table.UserEO;public class SendServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
    boolean bSuccess = true;
    String chatID = request.getParameter("cid");
    String userID = request.getParameter("uid");
    String msg = request.getParameter("msg");
    if (chatID == null || chatID.equals(""))
    return; if (userID == null || userID.equals(""))
    return;
    if (msg == null || msg.equals(""))
    return;
    UserEO user = new UserEO(Integer.parseInt(userID));
    Connection con = null;
    ConnectionMananger gm = null;
    try {
    gm = new ConnectionMananger();
    con = gm.getConnection();
    int number = DbManager.getTotal(con,
    "select message_id from message") + 1;
    String insertSQL = "insert into message (message_id,chat_id,user_id,user_name,message,post_time) values("
    + number
    + ","
    + chatID
    + ","
    + user.getUserID()
    + ",'"
    + user.getUserName() + "','" + msg + "',GETDATE())";
    DbManager.excute(con, insertSQL);
    } catch (Exception e) {
    try {
    con.rollback();
    } catch (Exception ez) {
    ez.printStackTrace();
    }
    e.printStackTrace();
    } finally { // コネクションの解放
    if (con != null) {
    try {
    con.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    }
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException { doPost(request, response);
    }}
      

  2.   

    package book.chat;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.Vector;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import book.chat.table.MessageEO;public class GetServlet extends HttpServlet{
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
    String chatID = request.getParameter("chatId");
    String lastID = request.getParameter("last");

    if ( chatID==null||chatID.equals("") )
    return ;
    if ( lastID==null||lastID.equals("") )
    return ;

    Vector vResult = new Vector();
    Connection con = null;
    ConnectionMananger gm = null;
    ResultSet rs = null;
    try {

    String sql = "select message_id from message where chat_id="+chatID+" and message_id >"+lastID;
    MessageEO message =null;
    gm = new ConnectionMananger();
    con = gm.getConnection();
    rs = DbManager.getResultSet(con, sql );
    while (rs.next())
    {
    message = new MessageEO(rs.getInt("MESSAGE_ID"));
    vResult.add(message);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }finally{
    if(rs!=null){
    try {
    rs.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    // コネクションの解放
    if(con!=null){
    try {
    con.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    }

    response.setContentType("text/xml");//ノ靹テキオサリハ?ンタ獎ヘホェxmlクス
    java.io.PrintWriter out = response.getWriter();
    System.out.println(parasToXML(vResult));
    out.print(parasToXML(vResult));//オテparasToXML()キスキィ
    }public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {doPost(request, response);
    }
    public String parasToXML(Vector v) {// クテキスキィスォハ?ンラェサッウノXMLクスハ莎?
    StringBuffer buf = new StringBuffer();
    buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    buf.append("<root>");
    for (int i = 0; i < v.size(); i++) {
    MessageEO message = (MessageEO) v.get(i);
    buf.append("<message id=\""+message.getMessageID()+"\">");
    buf.append("<user>" + message.getUserName() + "</user>");
    buf.append("<text>" + message.getMessage() + "</text>");
    buf.append("<time>" + message.getPostTime()+ "</time>");
    buf.append("</message>");
    }
    buf.append("</root>");
    return buf.toString();
    }}
      

  3.   

    var sendReq = createAjaxObj();
    var receiveReq = createAjaxObj();
    var lastMessage = 0;
    var mTimer;
    var chatId;
    var userId;
    //Function for initializating the page.
    function startChat() {
    //Set the focus to the Message Box.
    document.getElementById('txt_message').focus();
    //Start Recieving Messages.
    initial();
    getChatText();
    }
    function initial()
    {
      chatId = document.frmmain.cid.value;
      userId = document.frmmain.uid.value;
    }
    //Gets the browser specific XmlHttpRequest Object
    function createAjaxObj(){
      var httprequest=false
      if (window.XMLHttpRequest)
      { // ???Mozilla, Safari ????
        httprequest=new XMLHttpRequest()
        if (httprequest.overrideMimeType)
          httprequest.overrideMimeType('text/xml')
       }
       else if (window.ActiveXObject)
       { // ???IE
         try {
           httprequest=new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e){
           try{
              httprequest=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e){}
         }
       }
       return httprequest
    }
    //Gets the current messages from the server
    function getChatText() {
    //alert("7");
    //判断上次请求的状态是否完成或是还未发送请求
    try{
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
    //alert("8");
        //发送获得消息的服务器地址
        var submitURL = "getMessage?chatId="+chatId+"&last=" + lastMessage;
    receiveReq.open("GET", submitURL, true);//建立请求
    receiveReq.onreadystatechange = handleReceiveChat; //当请求状态改变时调用handleReceiveChat方法
    receiveReq.send(null);//发送请求
    }
    //alert(submitURL);
    }catch(e){
    alert(e);
    }
    }
    //Add a message to the chat server.
    function sendChatText() {
    //alert("1");
    //如果输入的消息为空,提示用户输入
    if(document.getElementById('txt_message').value == '') {
    alert("You have not entered a message");
    return;
    }
    //判断上次发送消息请求的状态是否完成或是还未发送请求
    //alert("2");
    if (sendReq.readyState == 4 || sendReq.readyState == 0) {
       //保存消息的服务器地址
        var submitURL = "sendMessage?cid="+chatId+"&uid="+userId+"&msg="+document.getElementById('txt_message').value;

    sendReq.open("POST",  submitURL , true);//建立请求连接
    sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    sendReq.onreadystatechange = handleSendChat; //当请求状态改变时调用handleSendChat方法
    sendReq.send(null);//发送请求
    document.getElementById('txt_message').value = '';//设置提交消息文本框为空
    }
    //alert("3");
    }
    //When our message has been sent, update our page.
    function handleSendChat() {
    //alert("4");
    //取消间隔获取数据的方法
    clearInterval(mTimer);
    //alert("5");
    //重新获得调用getChatText()方法
    getChatText();
    //alert("6");
    }
    //Function for handling the return of chat text
    function handleReceiveChat() {
        
    if (receiveReq.readyState == 4) {//此时请求已经完成
       //获得显示消息的图曾层元素
    var chat_div = document.getElementById('div_chat');
    //获得返回后的XML文件
    var xmldoc = receiveReq.responseXML;

    //得到所有的新的消息记录
    var message_nodes = xmldoc.getElementsByTagName("message"); 
    var n_messages = message_nodes.length;
    alert('message_nodes.lengthL:'+message_nodes.length);

    //循环每一条新消息,组织成HTML格式数据
    for (i = 0; i < n_messages; i++) {
    var user_node = message_nodes[i].getElementsByTagName("user");
    var text_node = message_nodes[i].getElementsByTagName("text");
    var time_node = message_nodes[i].getElementsByTagName("time");
    chat_div.innerHTML += '(<font class="chatUser">'+user_node[0].firstChild.nodeValue + '</font>)&nbsp;said at &nbsp;';
    chat_div.innerHTML += '<font class="chatTime">' + time_node[0].firstChild.nodeValue + '</font><br />';
    chat_div.innerHTML += '<span class="title">'+text_node[0].firstChild.nodeValue + '</span><br />';
    chat_div.scrollTop = chat_div.scrollHeight;
    //每循环一条消息,记录到全局变量lastMessage中
    lastMessage = (message_nodes[i].getAttribute('id'));
    }
    //获取数据后,设置2秒钟后再次调用getChatText()方法
    mTimer = setTimeout('getChatText();',2000); //Refresh our chat in 2 seconds
    }
    }
    //This functions handles when the user presses enter.  Instead of submitting the form, we
    //send a new message to the server and return false.
    function blockSubmit() {
    sendChatText();
    return false;
    }
      

  4.   

    我用response.getWriter().print("true");试了,还是ajax取不到里面的内容.是不是方法定义错了?    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
    {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out=response.getWriter();
    EncodeUC.getEncodeLang();
    String web_id = EncodeUC.EncodeUC(request.getParameter("web_id").trim());
    bean.member.MemberInfo dataObj = new bean.member.MemberInfo();
    int rtnVal = dataObj.getWebIdCnt(web_id);
    if (rtnVal == 0){
    out.print("true");
    }else{
    out.print("false");
    }
    out.close();
    }
      

  5.   

    我的数据量很小,返回来的东西除了true以外,就false两种可能.
    然后ajax 再去读取这个Servlet输出来的数据是true还是false,如果是用jsp文件,可以取到,但我不知道为什么用Servlet就取不到了,而jsp文件头会产生很多空格,所以又没办法使用jsp