分享

关于XMLHTTP和XML实现无刷新提交

 昵称2807 2006-10-14
关于XMLHTTP和XML实现无刷新提交



HTML页面
<script language="javascript">
function chkform()
{
  if(form1.UserName.value=="")
  {
    alert("真实姓名不能为空!");
    form1.UserName.focus();
    return false;
  }
  if(form1.Password.value=="")
  {
    alert("电话号码不能为空!");
    form1.Password.focus();
    return false;
  }
  saveData();
}
        
function saveData()
{
  var objDom = new ActiveXObject("MSXML2.DOMDocument");
  objDom.loadXML("<Root/>");

  oGeneral = objDom.createElement("username");
  oGeneral.text=form1.UserName.value;
  objDom.documentElement.appendChild(oGeneral);

  oGeneral = objDom.createElement("password");
  oGeneral.text=form1.Password.value;
  objDom.documentElement.appendChild(oGeneral);

  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.open("post","submit\\checklogin.asp",false);
  xmlhttp.send(objDom);
  if(xmlhttp.responseText=="True"){
  window.location="main.asp";
  }
  else
  {
    alert(unescape(xmlhttp.responseText));
  }
}
</script>
<form name="form1" method="post">
用户名称:<input name="UserName"  type="text">
用户密码:<input name="Password"  type="password">
<img src="3.jpg" width="240" height="82" onClick="javascript:chkform()" style="cursor:hand">
</from>




submit\checklogin.asp页面内容
<!--#include file="../include/const.asp"-->
<!--#include file="../include/Function.asp"-->
<!--#include file="../include/MD5.asp"-->
<%
on error resume next
‘------------------------------------------------------------------
‘---------------------读取XML对象----------------------------------
‘------------------------------------------------------------------
dim username,password
set XmlDom = server.CreateObject("Msxml2.domdocument")
XmlDom.async = False 
XmlDom.load(request)
If XmlDom.parseError.errorCode<>0 Then
    response.Write ("Flase")
    response.End()
End If
username = XmlDom.selectSingleNode("//username").text
password = XmlDom.selectSingleNode("//password").text
set XmlDom = nothing
‘------------------------------------------------------------------
‘Response.Write username&password
‘Response.End()


dim errmsg
set rs=server.createobject("adodb.recordset")
rs.ActiveConnection = strConn
rs.Source = "select * from  admin where username=‘"&username&"‘"
rs.CursorType = 1
rs.CursorLocation = 2
rs.LockType = 3
rs.open()
if     rs.recordcount = 1 then
    if rs.Fields.Item("password").Value=MD5(trim(password)) then
        if rs.Fields.Item("isclock").Value=1 then
            Randomize()
            Login_code=Hour(Now()) & Minute(Now()) & Second(Now()) & Int(Rnd()*1000000)
            ‘Response.Write(Login_code)
            ‘Response.End()
            Response.Cookies(All_cookiesName)("ID")=rs.Fields.Item("cmp_id").Value
            Response.Cookies(All_cookiesName)("username")=rs.Fields.Item("username").Value
            Response.Cookies(All_cookiesName)("password")=rs.Fields.Item("password").Value
            Response.Cookies(All_cookiesName)("state")=rs.Fields.Item("state").Value
            Response.Cookies(All_cookiesName)("Login_code")=Login_code
            if Cookies_Expires <> 0 then
                Response.Cookies(All_cookiesName).Expires=Cookies_Expires
            end if
            if Cookies_Domain <> "" then
                Response.Cookies(All_cookiesName).Domain=Cookies_Domain
            end if
            rs("Login_code")=Login_code
            rs.update()
            rs.close()
            set rs = nothing
            Response.Write("True")
            Response.End()
        else
            Response.Write escape("您的用户名已经被锁定,\n请向管理申请解锁!")
            Response.End()
        end if
    else
        Response.Write escape("您输入的密码错误!")
        Response.End()
    end if
else
    Response.Write escape("您输入的用户名不存在!")
    Response.End()
end if
if err.number<>0 then Response.Write escape("不知明错误!")
%>



这个是个最基本的,当然我们也可以根据特定的需要写成公共函数,把所有的FORM表单里全部VALUE全部给生成XML对象,然后再对其操作。
var yaya="";
            var checkboxname="";
            var radioname="";
                var objDom = new ActiveXObject("MSXML2.DOMDocument");
            objDom.loadXML("<Root/>");
            for(var i=0;i<frm.elements.length;i++)
            {
                if((frm.elements.type=="text")||(frm.elements.type=="hidden"))
                {
                    oGeneral = objDom.createElement(frm.elements.name);
                    oGeneral.text=unescape(trim(frm.elements.value));
                    objDom.documentElement.appendChild(oGeneral);
                }
                if(frm.elements.tagName=="SELECT")
                {
                    oGeneral = objDom.createElement(frm.elements.name);
                    oGeneral.text=unescape(frm.elements.options[frm.elements.selectedIndex].value);
                    objDom.documentElement.appendChild(oGeneral);
                }
                if(frm.elements.tagName=="TEXTAREA")
                {
                    oGeneral = objDom.createElement(frm.elements.name);
                    oGeneral.text=unescape(trim(frm.elements.value));
                    objDom.documentElement.appendChild(oGeneral);
                }
                if(frm.elements.type=="checkbox")
                {
                    if(checkboxname!=frm.elements.name)
                    {
                        for(var j=0;j<document.getElementsByName(frm.elements.name).length; j++)
                        {
                            if(document.getElementsByName(frm.elements.name)[j].checked)
                            {
                                yaya=yaya + document.getElementsByName(frm.elements.name)[j].value + "," ;
                            }
                        }
                        yaya=yaya.substring(0,yaya.length-1);
                        oGeneral = objDom.createElement(frm.elements.name);
                        oGeneral.text=yaya;
                        objDom.documentElement.appendChild(oGeneral);
                        checkboxname=frm.elements.name;
                        yaya="";
                    }
                }
                if(frm.elements.type=="radio")
                {
                    if(radioname!=frm.elements.name)
                    {
                        for(var j=0;j < document.getElementsByName(frm.elements.name).length;j++)
                        {
                            if(document.getElementsByName(frm.elements.name)[j].checked)
                            {
                                yaya=document.getElementsByName(frm.elements.name)[j].value;
                                break;
                            }
                        }
                        oGeneral = objDom.createElement(frm.elements.name);
                        oGeneral.text=yaya;
                        objDom.documentElement.appendChild(oGeneral);
                        radioname=frm.elements.name;
                        yaya="";
                    }
                }
            }
            alert(objDom.xml);
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.open("post",frm.action,false);
            xmlhttp.send(objDom);
            if(xmlhttp.responseText=="True"){
                //这里就是操作成功
            }
            else{
                alert(unescape(xmlhttp.responseText));
            }


frm为传递进来的form对象,这个需要放在一个函数里传递进去frm

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多