asp中使用jQuery的Ajax~
话说写asp真是头大,html标记,VBScript,JavaScript,SQL语句全部混杂在一起,特别是修改人家代码的时候,某些逻辑看的各种头大。。无奈中...
boss想让他们更乱,以后别人来了更看不懂,于是要使用一些新的技术,就是Ajax.举个简单的例子,就像咱们的项目,就是好比有3个产品的SN要验证,这些验证是要从后台数据库中取出对应的SN从而才能进行验证的。以前我们的做法,是先生成一个preSubmit页面,也就是一个预览页面,在这个页面中比较数据库中是否有对应SN。
现在各种地方Ajax,我们也想用一用啊,于是,就在填写SN的地方直接异步去取后台的数据进行验证,于是,我照了boss的要求把这个样子做了出来...boss还算满意。。嘿嘿
因为不想去写xmlhttprequest了,而且最近也在学jQuery,所以就直接用了jQuery中的Ajax部分的东西...
HTML页面部分
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
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