Promotic
WikipediaLinkedInYoutubeTwitterFacebook

onPageAction - událost objektu PmaWebDir

Popis:
Událost je vyvolána po zaslání parametrů a dat z HTML dokumentu do aplikace PROMOTIC, 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.FilePath - (String) Relativní cesta k souboru, který je vyžadován z Web prohlížeče.
pEvent.Method - (String) 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.Params - (String) 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) 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 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ě 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 tak 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. 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.Tavičská 845/21 703 00 Ostrava-Vítkovice