RICHIESTE

Come noto il protocollo HTTP è senza stato, vale a che ogni richiesta è indipendente dalla precedente e si conclude al momento della chiusura della connessione. In generale nello sviluppo di un'applicazione web si ha la necessità di tenere traccia di quelle che sono le azioni compiute dall'utente da una pagina ad un'altra. Di norma le tecniche utilizzare prevedono che le richieste http avvengano con passaggio di parametri, esenzialmente esistono due metodi:

  • GET: i parametri vengono passati direttamente nell'url (page.php?param1=value1¶m2=value2&...¶mn=valuen), questa tecnica viene utilizzata anche nelle transazioni AJAX
  • POST: la richiesta viene effettuata tramite l'utilizzo di un form

Ricordiamo che in JAMP la creazione della pagina avviene in due fasi: nella prima vengono creati gli oggetti ed in generato il codice HTML della pagina, nella seconda, tramite una richiesta AJAX eseguita automaticamente dal framework, avviene la loro popolazione degli stessi. Tenere presente questo aspetto è importante perché spesso ci si trova ad avere la necessità di utilizzare dei parametri per modificare il comportamento della pagina ma essi risultano disponibili solo durante il caricamento iniziale(evento html_load) e non nella seconda fase quando magari quei parametri potrebbero servono a filtrare o elaborare i dati. Le soluzioni adottabili sono due:

  • Salvare i parametri all'interno di una variabile di sessione o globale durante il caricamento iniziale per poi essere disponibili dopo.
  • forwardrequest: ponendo a true questo attributo nella pagina automaticamente il framework inoltrerà i parametri iniziali con la quale la pagina è stata richiamata anche per la successiva richiesta AJAX.

ESEMPIO FORM

Un semplice form per postare i dati.

<myform typeobj="form" action="mypage.php" target="_blank" method="post">
    <param1 typeobj="text" name="nparam1" />
    <param2 typeobj="text" name="nparam2" />
    <sel1 name="nsel1" typeobj="dsselect">
        <options>
            <opt0 optiontext="0" optionvalue="0"/>
            <opt1 optiontext="1" optionvalue="1"/>
            <opt2 optiontext="2" optionvalue="2"/>
        </options>
    </sel1>
</myform>

N.B.: Ricordiamo che in generale quando si effettua un post utilizzando un FORM l'accesso ai dati inviati al server si basa sul nome assegnato al tag e non sul suo id:

<?php
global $param1;
function 
html_load()
{
   global 
$param1;
   
$param1 $_POST['param1'];
   
$_SESSION['param2'] = $_POST['param2'];  // PER UN SUCCESSIVO UTILIZZO
}
?>

Nel caso in cui i valori siano stati postati tramite url

<?php
global $param1;

function 
html_load()
{
   global 
$param1;
   
$param1 $_GET['param1'];
   
$_SESSION['param2'] = $_POST['param2'];
}
?>

ESEMPIO AJAX

Aggiungendo questo codice alla pagina di destinazione si può utilizzare il parametro postato per filtrare i dati relativi al ds1.

<?php
function html_load()
{
   global 
$xml;
   
$xml->pageObj->setProperty("onload","AJAX.loadAll('".$_SERVER['PHP_SELF']."?ds1where=' + encodeURIComponent('`param1`=".$_POST['param1']."'));");
}
?>