Utilizando Ajax con Néfele

AJAX nos permite que nuestras web puedan enviar y recibir información a nuestro CGI sin volver a cargar toda la página, actualizando dinámicamente solo la parte de la página que queremos.

Para ello debemos crear el wBevel donde vamos a recibir la respuesta de nuestro CGI, y al control que haga la llamada le indicaremos en su propiedad cAjaxBevel cuál es el cId de dicho wBevel.

Si no indicamos nada en dicha propiedad no se realizará la consulta por AJAX lo que provocará la carga de una página nueva solo con el contenido de la respuesta de nuestro CGI.

Nuestro CGI recibirá la llamada, pero no sabe si es por AJAX o no, lo ideal es que la función a la que llamamos este diseñada para dar un respuesta para AJAX.

Y como lo hacemos, primero tenemos que tener en cuenta que solo crearemos el contenido que va en el wBevel de respuesta, por lo tanto no crearemos ningún TWebPage, si vamos a enviar varios controles tendremos que encapsularlos en un wBevel o en un wPanel, ya que será el Create() de este el que montara todo el HTML que devolveremos a la página web.

Como es posible que no solo tengamos que enviar HTML, sino que haga falta código JS u otro código, utilizaremos el método FullHTML del contenedor para que nos lo agrupe todo en una cadena para la respuesta.

En aquellos casos en los que la respuesta a una llamada por Ajax solo retorne código Script (JS o JQuery), podemos indicar en cAjaxBevel nflcargo que es un wBevel oculto que esta en todas las páginas generada con Néfele con dicho fín.

Código de uso

   WITH OBJECT wForm():New( )
      :lAutoComplete := .F.
      :cFunction     := "ControlAcceso"
      WITH OBJECT WEdit():New( :__WithObject() )
         :cId        := "usuario"
         :cTitle     := "Usuario"
         :cIcon      := "person"
         :lAutoFocus := .T.
         :SetRequired()
         :Create()
      END WITH
      WITH OBJECT WEdit():New( :WO )
         :cId    := "password"
         :cTitle := "Password"
         :cIcon  := "lock"
         :SetSubmit()
         :SetPassword()
         :SetRequired()
         :lSubmit := .T.
         :Create()
      END WITH
      WITH OBJECT WButton():New( :WO )
         :cId       := "submit"
         :cText     := "Aceptar"
         :lSubmit   := .T.
         :lLarge    := .T.
         :lCenter   := .T.
         :Create()
      END WITH
      :Create()
      cHtml := :FullHtml()
   END WITH
   oCgi:SendPageNoCache( cHtml )