I do not see anything wrong in this. Do you use firebug?

On 30 Giu, 15:18, elfuego1 <elfue...@gmail.com> wrote:
> I hope I don't make your eyes bleed by puting all the code here but
> there is no other way to show it to you.
> I made change only in one place of the code to gather "login" value:
> {login:value}
> Oryginaly it was: {name:value}.
>
>  $.post("{{=URL(r=request,c='default',f='ajaxuserexist')}}",
> {login:value},function(result){
>
> Below is the whole content of index.html
>
> {{extend 'layout.html'}}
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
> <html>
> <head>
>     <meta http-equiv="Content-type" content="text/html;
> charset=utf-8">
>     <title>Ajax User Validation with web2py by Martin Sagastume</
> title>
>     <style type="text/css">
>     <!--
>     body { font-family:Arial,Verdana,Sans-serif; }
>
>     input[type=text]{
>         font-size:12px;
>         color:#666666;
>         background-color:#ffffff;
>         padding-top:5px;
>         width:200px;
>         height:20px;
>         border:1px solid #999999;
>     }
>
>     #resultbox { font-size:11px; }
>     .msg { color:blue; }
>     .success { color:green; }
>     .error { color:red; }
>     //-->
>     </style>
>     <script type="text/javascript"
> src="{{=URL(r=request,c='static',f='jquery.js')}}"></script>
>     <script type="text/javascript">
>
>     var submit = false;
>     $(document).ready(function(){
>         $("form").submit(function() {
>             return submit;
>         });
>     });
>
>     function getData(value){
>         if(value != ""){
>             $
> ("#resultbox").removeClass().addClass('msg').text('Validating...').fadeIn(10);
>             $.post("{{=URL(r=request,c='default',f='ajaxuserexist')}}",
> {login:value},function(result){
>                 if(result=='yes'){
>                     $
> ("#resultbox").removeClass().addClass('error').text('Login already
> taken').fadeTo(900,1);
>                     submit = false;
>                 }else{
>                     $
> ("#resultbox").removeClass().addClass('success').text('Login is
> available for registration!').fadeTo(900,1);
>                     submit = true;
>                 }
>             });
>         }else{
>             $("#resultbox").removeClass().addClass('msg').text('This
> field is required');
>         }
>     }
>
>     </script>
> </head>
> <body>
>     <form id="form1" method="post" action="page2">
>         <label for="country">Login:</label><br />
>         <input type="text" id="login" name="login"
> onblur="getData(this.value)" /><br />
>         <div id="resultbox" class="msg"></div><br />
>         <input type="submit" id="bsubmit" name="bsubmit"
> value="Submit" />
>     </form>
> </body>
> </html>
>
> On 30 Cze, 22:12, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > This should give you an error because the print(username) is outside
> > the funciton the function that defines username, after the function
> > returns. How are you passing the username to the ajax call? Did you
> > check with firebug that is calls the correct url?
>
> > On 30 Giu, 15:01, elfuego1 <elfue...@gmail.com> wrote:
>
> > > There was NO error messages. The code just didn't work.
> > > After inserting:
> > > print repr(username) to default.py I got:
>
> > > # -*- coding: utf-8 -*-
>
> > > #########################################################################
> > > ## This is a samples controller
> > > ## - index is the default action of any application
> > > ## - user is required for authentication and authorization
> > > ## - download is for downloading files uploaded in the db (does
> > > streaming)
> > > ## - call exposes all registered services (none by default)
> > > #########################################################################
>
> > > def index():
> > >     """
> > >     example action using the internationalization operator T and flash
> > >     rendered by views/default/index.html or views/generic.html
> > >     """
> > >     response.flash = T('Welcome to web2py')
> > >     return dict(message=T('Hello World'))
>
> > > def user():
> > >     """
> > >     exposes:
> > >    http://..../[app]/default/user/login
> > >    http://..../[app]/default/user/logout
> > >    http://..../[app]/default/user/register
> > >    http://..../[app]/default/user/profile
> > >    http://..../[app]/default/user/retrieve_password
> > >    http://..../[app]/default/user/change_password
> > >     use @auth.requires_login()
> > >         @auth.requires_membership('group name')
> > >         @auth.requires_permission('read','table name',record_id)
> > >     to decorate functions that need access control
> > >     """
> > >     return dict(form=auth())
>
> > > def download():
> > >     """
> > >     allows downloading of uploaded files
> > >    http://..../[app]/default/download/[filename]
> > >     """
> > >     return response.download(request,db)
>
> > > def call():
> > >     """
> > >     exposes services. for example:
> > >    http://..../[app]/default/call/jsonrpc
> > >     decorate with @services.jsonrpc the functions to expose
> > >     supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv
> > >     """
> > >     session.forget()
> > >     return service()
>
> > > def page2():
> > >     name = request.vars.login
> > >     #db.auth_user.insert(name=name)
> > >     return dict(name=name)
>
> > > def ajaxuserexist():
> > >       username = request.vars.values()[0]
> > >       return  db(db.auth_user.login==username).count() and 'yes' or
> > > 'no'
>
> > > print repr(username)
> > > response._vars=response._caller(index)
>
> > > On 30 Cze, 21:51, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > You can simplify it a bit
>
> > > > def ajaxuserexist():
> > > >       username = request.vars.values()[0]
> > > >       return  db(db.auth_user.login==username).count() and 'yes' or
> > > > 'no'
>
> > > > although it will not solve your problem.
> > > > There is nothing special in table auth_user so the problem is
> > > > somewhere else.
>
> > > > I suggest you insert a print repr(username).
> > > > Do you get any thicket? What does it say?
>
> > > > massimo
>
> > > > On 30 Giu, 14:29, elfuego1 <elfue...@gmail.com> wrote:
>
> > > > > During registration I want to check on the fly, if login chosen by the
> > > > > user is already in use or is it not in db and available to be used.
>
> > > > > def ajaxuserexist():
> > > > >     username = request.vars.values()[0]
> > > > >     query = (db.auth_user.login==username)
> > > > >     numres = db(query).count()
> > > > >     if numres > 0 :
> > > > >        return 'yes'
> > > > >     else:
> > > > >         return 'no'
>
> > > > > When I test it on any other table that doesn't have prefix auth_ then
> > > > > the above code works, but unfortunatelly I need to test auth_user
> > > > > table :-(
>
> > > > > On 30 Cze, 21:19, Chris S <sanders.ch...@gmail.com> wrote:
>
> > > > > > Probably a dumb question, but what are you checking the user 
> > > > > > against?
>
> > > > > > Both my and your example above are checking for username and you
> > > > > > didn't define a username in your auth_user.
>
> > > > > > Your query then is not working as:
>
> > > > > > def userexist(emailcheck):
> > > > > >     if db(db.auth_user.email==emailcheck).count() > 0:
> > > > > >         return 'yes'
> > > > > >     else:
> > > > > >         return 'no'
>
> > > > > > I know I've returned searches on auth_user it's no different than
> > > > > > other tables.  Just gotta find whey your getting no results.  Might
> > > > > > help if you post the exact search code that goes with the above
> > > > > > auth_user and the error message that's generated.
>
> > > > > > On Jun 30, 2:12 pm, elfuego1 <elfue...@gmail.com> wrote:
>
> > > > > > > Since I had added some fields (and intend to customize it 
> > > > > > > further) to
> > > > > > > my auth_user table the code for auth_user in db.py looks like 
> > > > > > > that:
>
> > > > > > > from gluon.tools import *
> > > > > > > auth=Auth(globals(),db)
>
> > > > > > > db.define_table('auth_user',
> > > > > > >     SQLField('login', 'string', length=50, default=''),
> > > > > > >     SQLField('password', 'password', length=512, readable=False,
> > > > > > > label='Password'),
> > > > > > >     SQLField('registration_key', length=512, default= '',
> > > > > > > writable=False, readable=False),
> > > > > > >     SQLField('reset_password_key', length=512, default='',
> > > > > > > writable=False, readable=False),
> > > > > > >     SQLField('first_name', length=128,default=''),
> > > > > > >     SQLField('last_name', length=128,default=''),
> > > > > > >     SQLField('email', length=128,default='', unique=True),
> > > > > > >     SQLField('phone', 'string', length=30, default=''),
> > > > > > > )
>
> > > > > > > On 30 Cze, 20:59, Chris S <sanders.ch...@gmail.com> wrote:
>
> > > > > > > > And you've defined auth in db.py with:
>
> > > > > > > > from gluon.tools import Auth
> > > > > > > > auth = Auth(globals(), db)
> > > > > > > > auth.define_tables()
>
> > > > > > > > I've done searches on auth_user before... I think.
>
> > > > > > > > On Jun 30, 1:44 pm, elfuego1 <elfue...@gmail.com> wrote:
>
> > > > > > > > > Unfortunatelly it doesn't.
> > > > > > > > > I can access any other table that's available through my 
> > > > > > > > > application
> > > > > > > > > but I can't get any value out of auth_user table.
> > > > > > > > > Is it somehow protected?
> > > > > > > > > Do I need to add some extra piece of code to expose them in my
> > > > > > > > > application in order to be able to acqiure any value out of 
> > > > > > > > > them?
>
> > > > > > > > > Desperate searcher.
>
> > > > > > > > > On 30 Cze, 06:25, Chris S <sanders.ch...@gmail.com> wrote:
>
> > > > > > > > > > I don't guess I follow.  Isn't that the same as:
>
> > > > > > > > > > def userexist(namecheck):
> > > > > > > > > >     if db(db.auth_user.username==namecheck).count() > 0:
> > > > > > > > > >         return 'yes'
> > > > > > > > > >     else:
> > > > > > > > > >         return 'no'
>
> > > > > > > > > > So I"m saying your querry should be:
> > > > > > > > > > query =
>
> ...
>
> leggi tutto

Reply via email to