asp中使用jQuery的Ajax~

话说写asp真是头大,html标记,VBScript,JavaScript,SQL语句全部混杂在一起,特别是修改人家代码的时候,某些逻辑看的各种头大。。无奈中...

boss想让他们更乱,以后别人来了更看不懂,于是要使用一些新的技术,就是Ajax.举个简单的例子,就像咱们的项目,就是好比有3个产品的SN要验证,这些验证是要从后台数据库中取出对应的SN从而才能进行验证的。以前我们的做法,是先生成一个preSubmit页面,也就是一个预览页面,在这个页面中比较数据库中是否有对应SN。

现在各种地方Ajax,我们也想用一用啊,于是,就在填写SN的地方直接异步去取后台的数据进行验证,于是,我照了boss的要求把这个样子做了出来...boss还算满意。。嘿嘿

因为不想去写xmlhttprequest了,而且最近也在学jQuery,所以就直接用了jQuery中的Ajax部分的东西...

HTML页面部分

代码
<% @ CODEPAGE=65001 %><%
Session.CodePage
=65001
Response.Charset
="utf-8"
Response.Expires
=0 %>
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script language="JavaScript">
function CheckForm(){
    
var ErrMsg="";
    
var PN1_ = $("#PN1").val();
    
var PN2_ = $("#PN2").val();
    
var PN3_ = $("#PN3").val();
    
var SN_ = $("#SN").val();
    
        $.post(
"jQcheckPN.asp",{PN1:PN1_,PN2:PN2_,PN3:PN3_},function(data){
        
if(data==""){
            
return false;
      }
            
else{
                ErrMsg
="";
                data_
=eval(data);
                
if(data_[0].PN1=="false"){
                    ErrMsg
=ErrMsg + "PN1不存在!\n";
                    }
                
if(data_[0].PN2=="false"){
                    ErrMsg
=ErrMsg + "PN2不存在!\n";
                    }
                
if(data_[0].PN3=="false"){
                    ErrMsg
=ErrMsg + "PN3不存在!\n";
                    }
                
if(SN_.length!=11){
                    ErrMsg
=ErrMsg + "SN的长度应为11位!\n";    
                    }
                }
                
if(ErrMsg!=""){
                alert(ErrMsg);
                }
                
else{
                alert(
"OK!");
                }
    });   
}
</script>
</head>
<body>
<form name="form1" action="post">
异步调用AJAX例子:
<br>
PN1: 
<input type="text" name="PN1" id="PN1" size="20" value="111x">(只有111才能通过校验)<br>
PN2: 
<input type="text" name="PN2" id="PN2" size="20" value="222x">(只有222才能通过校验)<br>
PN3: 
<input type="text" name="PN3" id="PN3" size="20" value="333x">(只有333才能通过校验)<br>
SN: 
<input type="text" name="SN" id="SN" size="20" value="1234567890">(只有长度11位才能通过校验)<br>
<input type="button" onclick="CheckForm()" value="Check">
</form>
</body>
</html>

 

后台asp页面部分:jQcheckPN.asp

代码
<% @ CODEPAGE=65001 %><%
Session.CodePage
=65001
Response.Charset
="utf-8"
Response.Expires
=0
for i=1 to 1000
    
for j=1 to 1000
    
next
next
PN1
=Trim(Request("PN1"))
PN2
=Trim(Request("PN2"))
PN3
=Trim(Request("PN3"))
'PN1="111"
'
PN2="222"
'
PN3="333"
if PN1="111"Then
    PN1Msg 
= "true"
else
    PN1Msg 
= "false"
end if    
if PN2="222" Then
    PN2Msg 
= "true"
else
    PN2Msg 
= "false"
end if
if PN3="333" Then
    PN3Msg 
= "true"
else
    PN3Msg 
= "false"
end if
    Str 
= "[{PN1:'" & PN1Msg & "',PN2:'" & PN2Msg & "',PN3:'" & PN3Msg & "'}]"
   
'Response.ContentType = "application/json";        
        response.write Str
     
'Response.End();
%>

 

HTML部分很简单,也就是四个Input type=“text”,用来接受SN的输入,另外还有1个进行异步验证的Button,其中的方法就是对其数据进行验证。

在该方法中,Ajax方面我使用的是jQuery中的post函数,将所要验证的数据写成JSON的格式传递到后台页面,在后台asp页面,为了简化逻辑,我模拟了数据库了提取,分别只有111,222,333才能通过验证。然后将其是否存在的结果凑成一个JSon格式的字符串,作为回调的值回写过去。回到前台页面,回调函数中的data就是回传的值,但是此处还不能做JSon解析,因为回传过来的是一个字符串,而不是一个JSon对象。之前我也是在这犯了错误,data[0].PN在IE调试中显示一直不存在该对象。所以要进行eval(data)操作,将该字符串转换为一个JSON对象,就可以取出数据,从而做某些判定了。自此,数据传入后台进行验证再传回前台,从而实现了异步传递...估计项目中马上就要用到....我也继续学习我的JQuery

posted @ 2009-12-20 14:47  Tmac_  阅读(208)  评论(0编辑  收藏  举报