CustomValidator控件+ajax 实现注册时的异步验证
在.net的验证控件中有一个CustomValidator验证控件,其属性ClientValidationFunction为客户端函数,在需要验证的控件失去焦点或者post数据时,调用该函数。
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomValidatorTest.aspx.cs" Inherits="Web.CustomValidatorTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<mce:script type="text/javascript" src="jquery/jquery-1.2.6-vsdoc-cn.js" mce_src="jquery/jquery-1.2.6-vsdoc-cn.js"></mce:script><%--jquery文件--%>
<mce:script type="text/javascript"><!--
function validator(oSrc, args) {
//oSrc 为object 类型,为CustomValidator1对象
//args为有两个属性:Value为验证控件的值,
// IsValid 为bool类型,表示是否验证通过
$.ajax({
async: false, //同步,异步不行,在ajax为返回之前,函数就结束,提交IsValid的值了。
type: "POST",
url: "CustomValidatorTestHander.ashx",
data: "val=" + args.Value,
success: function(msg) {
if (msg == "123") {
//如果后台返回值为123,验证失败
args.IsValid = false;
//todo
//这里是否可以修改oSrc对象来实现异步请求呢?
}
}
});
}
// --></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>输入123验证失败:</td>
<td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
<td><asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="验证不通过"
相关文档:
function selectTradezone(){
var copyTradezone = document.forms[0].copyTradezone;
new BaseTool().ajax("getTradezoneByCity",callback,[document.forms[0].city.value,document.forms[0].brand.value]);
function callba ......
客户端代码:
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if (window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function sl(url){
......
//Ajax应用的五个步骤
//1.创建XMLHttpRequest对象
var xmlHttp=createXMLHttpRequest();
function createXMLHttpRequest()
{
var xmlHttp;
if(Window.XMLHttpRequest)
{
//IE6以上版本和其他浏览器内置XMLHttpRequest对象
xmlHttp=new XMLHttpRequest();
......
以我以前写的一个练习AJAX的会员注册页面为例。
下面这些主要是在输入用户名,光标离开输入框就进行判断该用户名是否合法的ajax方法。
(1)Xmlhttprequest AJAX之核心
function S_Xmlhttprequest(){
if(window.ActiveXObject) //IE
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
else if(window.XmlHTTPRe ......
以下代码请在Firefox 3.5、Chrome 3.0、Safari 4之后的版本中进行测试。IE8的实现方法与其他浏览不同。
跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过 style. 标签加载外部样式表文件、通过 img 标签加载外部图片、通过 script. 标签加载外部脚本文件、通过 W ......