Promotic

onPageAction - událost objektu PmaWebDir

Popis:
Událost je vyvolána po zaslání parametrů a dat z HTML dokumentu do PROMOTIC aplikace, například po vyplnění HTML formuláře.
Parametry:
pMe(Object) Reference na PmaWebDir objekt, ve kterém daná událost vzniká.
pEvent(Object) Reference na objekt, který popisuje informace o dané události.
pEvent.Method - (String) [pro čtení] Název HTTP metody, kterou se parametry zaslaly:
"POST" - Zaslání parametrů z HTML formuláře
"GET" - Zaslání parametrů jako součást vyžadované nové stránky
pEvent.FilePath - (String) [pro čtení] Relativní cesta k souboru, který je vyžadován z Web prohlížeče.
pEvent.Params - (String) [pro čtení] Textový řetězec obsahující parametry v URL adrese.
Tento řetězec má tvar například "a=13&b=xyz". To znamená, že "a" má hodnotu "13" a "b" má hodnotu "xyz".
Získat jednotlivé hodnoty z tohoto řetězce lze metodou Pm.HTTPGetFormValue.
pEvent.Data - (Variant) [pro čtení] Obsahuje zaslaná data (obsah těla požadavku u HTTP metody POST).
Data jsou buď v podobě řetězce pro jednoduchý textový tvar nebo v podobě objektu PmBuffer pro komplexní binární tvar.
Data v textové podobě mají stejný tvar jako parametry v URL adrese, takže je lze číst metodou metodou Pm.HTTPGetFormValue.
Data v binární podobě je potřeba zpracovat metodou Pm.HttpFormDataParse.
Poznámka:
Událost je vyvolána po události PmaWeb.onNewRequest a před vytvořením odpovědi klientovi (před načtením a upravením souboru pEvent.FilePath a před událostí PmaWebDir.onPageModify).
Událost je vyvolána pouze pokud klient, který zasílá data, splňuje oprávnění "WebWrite".
 
HTML formulář může odeslat data metodou POST na server v jednoduchém textovém tvaru application/x-www-form-urlencoded, např. "Název1=Hodnota1&Název2=Hodnota2 ...", kde jednotlivé hodnoty lze pak číst pomocí Pm.HTTPGetFormValue.
 
HTML formulář může také odeslat data metodou POST na server v komplexním binarním tvaru multipart/form-data, který může obsahovat kromě textových hodnot i binární data a soubory. Zpracovat surová data v podobě objektu PmBuffer lze pak metodou Pm.HttpFormDataParse.
 
Upozornění! Ve starých verzích PROMOTIC neexistoval parametr pEvent.Data. Parametr pEvent.Params pak obsahoval buď parametry URL adresy nebo pokud parametry nebyly pak případné tělo požadavku.
Kvůli kompatabilitě je při konverzi staré aplikace na novou přidán do prvního řádku skriptu příkaz pro původní chování.
//#pragma option OldPageAction = 1 (pro JavaScript) nebo
'#pragma option OldPageAction = 1 (pro VBScript).
Příklad1:
Příklad na poslání dat z HTML formuláře (metoda "POST"). HTML formulář má například následující obsah:
<html><head>
  <title>HtmlForm example</title>
</head>
<body>
  <form action="main.htm" method="POST">
    hodnota:
    <input type="text" name="V1" value="22"/>
    <input type="submit" value="Odeslat na server"/>
  </form>
</body>
<html>
 
Pokud klient zadá hodnotu například 33 a odešle formulář, pak je vyvolána událost onPageAction na serveru s nastavenými hodnotami:
JavaScriptVBScriptVyber a zkopíruj do schránky

pEvent.FilePath = "main.htm";
pEvent.Method = "POST";
pEvent.Data = "V1=33";
 
V události pak může být například tento algoritmus:
JavaScriptVBScriptVyber a zkopíruj do schránky

var sV1;
if (pEvent.FilePath == "main.htm")
{
sV1 = Pm.HTTPGetFormValue("V1", pEvent.Data);
// v proměnné sV1 je hodnota "33" ...
}
Příklad2:
Příklad na poslání parametrů jako součást vyžadované nové stránky z jiné HTML stránky (metoda "GET"). V jakékoli HTML stránce může být například odkaz:
<A href="main.htm?V1=33">Nastav V1=33</A>
Příklad na poslání parametrů jako součást vyžadované nové stránky přímo z adresního řádku Web prohlížeče (metoda "GET"). Ve Web prohlížeči zadejte například:
http://user1/dir/main.htm?V1=33
 
V události pak může být například tento algoritmus:
JavaScriptVBScriptVyber a zkopíruj do schránky

var sV1;
if (pEvent.FilePath == "main.htm")
{
sV1 = Pm.HTTPGetFormValue("V1", pEvent.Params);
// v proměnné sV1 je hodnota "33" ...
}
Příklad3:
Parsování pole map obsahujících data souborů přijatých uploadem od klienta.
Viz Předkonfigurace "PmaWebDir - Upload souborů z Web klienta na server".
JavaScriptVBScriptVyber a zkopíruj do schránky

var i;
var oData = pEvent.Data;
if (Pm.GetVarType(oData, 1) == "PmBuffer")
{
var aParts = Pm.HttpFormDataParse(oData);
for (i = 0; i < oData.GetSize(1); i++)
{
var mPart = aParts.GetItem(i, -1);
Pm.Debug(mPart.Name);
Pm.Debug(mPart.File);
Pm.Debug(mPart.Type);
Pm.Debug(mPart.Value.GetSize());
}
}

Historie:
Pm9.00.15: Přidán parametr pEvent.Data.
© MICROSYS, spol. s r. o.