Páginas

martes, 28 de diciembre de 2010

Web2py un ejemplo donde usaremos la función ajax

Vamos a tratar de modelar lo que hace el gmail a la hora de eliminar los correos en la vista estándar (sin refrescar la pagina), esto se logra usando ajax. La función ajax(url,[name],target)  utilizada en este ejemplo viene por defecto con el Web2py y está basada en jQuery $.ajax.

en el modelo

db.py:

# recuerde llenar la tabla

db.define_table('gmail',   
     Field('correo'))

..................................................................
en la vista

index.html:

{{extend 'layout.html'}}
<INPUT type="button" value="suprimir" onclick="ajax('{{=URL('data')}}',['hijos'],'target');"/><br/><br/>

<span id='target'>
{{if len(lista):}}
{{for row in lista:}}
     {{=INPUT(_type='checkbox', _name='hijos', _value=row.id)}}
    <span style='margin-left:0%'>{{=row.correo}}</span><br/>
     {{pass}}
{{else:}}
    No hay datos
{{pass}}
</span>

.....................................................................................
en la controladora

default.py

def index():
   
    lista = db(db.gmail).select()
   
    return dict(lista=lista)
   
def data():   
    listado = []      
    if request.vars.hijos:
       listacheck = request.vars.hijos
       if not isinstance(listacheck,list):
           listacheck=[listacheck,]         
                 
       for elem in listacheck:                    
             db(db.gmail.id== elem).delete()
            
       if(db(db.gmail.id > 0).count()==0):
           return 'No hay datos'
       else:
          pass   
    
       for row in db(db.gmail).select():
          listado.append(INPUT(_type='checkbox',_name='hijos',_value=row.id))
          listado.append(SPAN(row.correo,_style='margin-left:0.5%'))         
          listado.append(BR())
         
       a = DIV(listado)

    return a

...............................................................................


1 comentario: