ajaxServlet.java程序清单:package com;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**------------------------------------------------------* 文件名: ajaxServlet.java* 创建日期: 2005-10-25* 原作者: miaohai* 版权所有:  miaohai* 功能说明: 生成XML文档** 修改记录:N/A*------------------------------------------------------*/public class ajaxServletextends HttpServlet{private static final String CONTENT_TYPE="text/xml; charset=gb2312";public void init()throws ServletException{}public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{response.setContentType(CONTENT_TYPE);PrintWriter out=response.getWriter();String action=request.getParameter("action");if(("send").equals(action)){StringBuffer sb=new StringBuffer("<type>");sb.append("<type_name>AA</type_name>");sb.append("<type_name>BB</type_name>");sb.append("<type_name>CC</type_name>");sb.append("<type_name>DD</type_name>");sb.append("</type>");out.write(sb.toString());out.close();}}}
html页面:<html><head><title>AJAX.html</title></head><script type="text/javascript">/*通过异步传输XMLHTTP发送参数到ajaxServlet,返回符合条件的XML文档*/function getResult(){var url = "servlet/com.ajaxServlet?action=send";if (window.XMLHttpRequest) {req = new XMLHttpRequest();}else if (window.ActiveXObject){req = new ActiveXObject("Microsoft.XMLHTTP");}if(req){req.open("GET",url, true);req.onreadystatechange = complete;req.send(null);}}/*分析返回的XML文档*/function complete(){if (req.readyState == 4){if (req.status == 200) {var type = req.responseXML.getElementsByTagName("type_name");var str=new Array();for(var i=0;i<type.length;i++){str[i]=type[i].firstChild.data;document.all['td'].innerHTML+=str[i]+"<BR>";}}}}</script><body onLoad="getResult()"><table width="80%"  border="0" cellspacing="0" cellpadding="0"><tr><td id="td">&nbsp;</td></tr></table></body>

解决方案 »

  1.   

    给个表单验证的例子。
    <script language="javascript">
    var http_request = false;
    function send_request(url) {//初始化、指定处理函数、发送请求的函数
    http_request = false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest) { //Mozilla 浏览器
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {//设置MiME类别
    http_request.overrideMimeType('text/xml');
    }
    }
    else if (window.ActiveXObject) { // IE浏览器
    try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }
    if (!http_request) { // 异常,创建对象实例失败
    window.alert("不能创建XMLHttpRequest对象实例.");
    return false;
    }
    http_request.onreadystatechange = processRequest;
    // 确定发送请求的方式和URL以及是否同步执行下段代码
    http_request.open("GET", url, true);
    http_request.send(null);
    }
    // 处理返回信息的函数
        function processRequest() {
            if (http_request.readyState == 4) { // 判断对象状态
                if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
                    //alert(http_request.responseText);
    if(http_request.responseText==-1)
    {
    //alert('该用户已经存在!');
    document.getElementById('usernameinfo').innerHTML = '<font color=red>对不起,该用户已经存在!</font>'
    }
    else
    {
    if(http_request.responseText==1)
    {
    document.getElementById('usernameinfo').innerHTML = '<font color=green>您可以放心注册</font>'
    }
    }
                } else { //页面不正常
                    alert("您所请求的页面有异常。");
                }
            }
        }
    function userCheck() {
    var f = document.form1;
    var username = f.username.value;
    if(username=="") {
    //window.alert("用户名不能为空。");
    //f.username.focus();
    document.getElementById('usernameinfo').innerHTML = '<font color=red>对不起,用户名不能为空!</font>'
    return false;
    }
    else {
    if(username.length<2 || username.length>50)
    {
    document.getElementById('usernameinfo').innerHTML = '<font color=red>对不起,用户名长度在2-50之间!</font>'
    f.username.focus();
    return false;
    }
    send_request('checkuser.asp?username='+username);
    }
    }
    </script>
      

  2.   

    把checkuser.asp给出来
    <!--#include file="inc/db_inc.asp"-->
    <%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open StrConn
    username = trim(request("username"))
    if username="" then
    response.write -1
    response.end
    end ifset rs=server.createobject("adodb.recordset")
    sql="select [username] from sf_user where [username]='" & username & "'"
    rs.open sql,conn,1,1
    if not rs.eof and not rs.bof then
        response.write -1
        response.end
    else
    response.write 1
    end if
    %>可以用php改改,呵呵,这个应该很简单拉。
      

  3.   

    一下。ps:asp代码看着还是有点别扭。它最终的输出结果只是1和-1吧。那就简单多了。
      

  4.   

    它和php进行判断并innerhtml的不同是,它来进行innerhtml的显示。这样可以精简php。
      

  5.   

    如果是POST方法呢?比如
             var xml = "<Login>";
    xml += "<name>"+username+"<\/name>";
    xml += "<pwd>"+userpwd+"<\/pwd>";
    xml += "<\/Login>";

    http_request.onreadystatechange = processRequest;
    var url="CheckLogin.php";
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_request.open("POST", url, true);
    http_request.send(xml);那么在服务器端怎么接受这个数据呢?
      

  6.   

    接受解决了,但是又有新问题,我原先的页面有个
    <input type="hidden" name="L_ID" value="0">
    在验证之前修改过他,但是提交服务器验证返回之后,这个值又被还原为0了。
      

  7.   

    你需要的功能使用xajax工具包就可全部实现
    xajax工具包用php写成
    只需设置dhtml对象的id,一般不用书写js代码
    你看一下他的示例程序就知道了由于涉及的知识面较广,从你的几个发问中可以看出,你尚不具备自己书写的能力