诛仙辰皇110级怎么玩:[Python]Web.py下表单的Ajax实时验证

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 01:25:29
web.py目前并没有对ajax的官方支持. Google Code上只有一个ajaxweb的项目, 可以暂时用一下.
利用jquey的库, 可以自己很轻松的实现这一个功能.
html:
           

               

                    请输入您的信息:
                   
                   


                       

                       
                       
                   


                   


                       

                       
                       
                   


                   


                       

                       
                   


                   


                       
                       
                   


               

           
 
Js:
    //validate
    var validateUsername = $('#validateUsername');
    $('#nickname').keyup(function () {
        var t = this;
        if (this.value != this.lastValue && this.value != '') {
            if (this.timer) clearTimeout(this.timer);
            
             //show checking status
            validateUsername.html(
                '检查昵称是否存在...'
            );
           
            this.timer = setTimeout(function () {
                $.ajax({
                    url: '/user/validate/',
                    data: 'action=check_nickname&value=' + t.value,
                    type: 'post',
                    success: function (j) {
                        validateUsername.html(j);
                    }
                });
           
            }, 500);
            //end timer
            this.lastValue = this.value;
        }
   
    });
这段代码肯定是在document ready的事件里了. 由于"$"的关系, 需要把js分离出html. 
服务端:
(只是初步的处理了一下)
class validate:
    def POST(self):
        i = web.input()
        if i.action == 'check_nickname':
            return self.validateName(i.value)
        elif i.action == 'check_email':
            return self.validateEmail(i.value)
   
   
    def validateName(self, name):
        return web.config.session.query(user).filter_by(nickname=name).count()
   
   
    def validateEmail(self, e):
        if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", e) == None:
            return False
           
        return web.config.session.query(user).filter_by(email=e).count() == 0
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/d_yang/archive/2008/08/27/2839202.aspx