Promotic

onPageAction - zdarzenie obiektu PmaWebDir

Opis:
Zdarzenie zostanie wywołane po wysłaniu parametrów oraz danych z dokumentu HTML do aplikacji PROMOTIC, na przykład po wypełnieniu formularza HTML.
Parametry:
pMe(Object) Odniesienie do PmaWebDir obiektu, w którym dane zdarzenie powstaje.
pEvent(Object) Odniesienie do obiektu zawierającego ściślejsze informacje o danym zdarzeniu.
pEvent.Method - (String) [do odczytu] Nazwa metody HTTP, która przesłała parametry:
"POST" - Wysłanie parametrów z formularza HTML
"GET" - Wysłanie parametrów jako części wymaganej nowej strony
pEvent.FilePath - (String) [do odczytu] Ścieżka względna do pliku, który jest żądany z przeglądarki internetowej.
pEvent.Params - (String) [do odczytu] Łańcuch tekstowy zawierający parametry w adresie URL.
Ten łańcuch jest w postaci na przykład "a=13&b=xyz". To znaczy, że "a" posiada wartość "13" oraz "b" posiada wartość "xyz".
Uzyskać poszczególne pojedyńcze wartości z tego łańcucha można przy pomocy metody Pm.HTTPGetFormValue.
pEvent.Data - (Variant) [do odczytu] Zawiera wysłane dane (zawartość treści żądania metody HTTP POST).
Dane są w formie łańcucha dla prostego tekstu lub w formie obiektu PmBuffer dla kompleksowej postaci binacnej.
Dane w postaci tekstu są zgodne z postacią parametrów w adresie URL, czyli możne je odczytać przy pomocy metody przy pomocy metody Pm.HTTPGetFormValue.
Dane w postaci binarnej należy opracować przy pomocy metody Pm.HttpFormDataParse.
Notatka:
Zdarzenie zostanie wywołane po zdarzeniu PmaWeb.onNewRequest i przed wytworzeniem odpowiedzi klientowi (przed wczytaniem i modyfikacją pliku pEvent.FilePath oraz przed zdarzeniem PmaWebDir.onPageModify).
Zdarzenie zostanie wywołane tylko jeżeli klient, który transmituje dane, posiada uprawnienie "WebWrite".
 
Formularz HTML może wysłać dane przy pomocy metody POST do serwera w postaci prestego tekstu application/x-www-form-urlencoded, np. "Nazwa1=Wartość1&Nazwa2=Wartość2 ...", gdzie pojedyńcze wartości można odczytać przy pomocy Pm.HTTPGetFormValue.
 
Formularz HTML może wysłać dane przy pomocy metody POST do serwera w komleksowej postaci binanej multipart/form-data, która oprócz wartości tekstowych może również zawierać dane binarne oraz pliki. Dane w formie obiektu PmBuffer można opracować przy pomocy metody Pm.HttpFormDataParse.
 
Uwaga! W starszych wersjach PROMOTIC nie istniał parametr pEvent.Data. Parametr pEvent.Params zawierał albo parametry adresu URL lub w przypadku braku parametrów ewentualną treść żądania.
Z powodu zgodności podczas konwersji starej aplikacji na nową dodawane jest do pierwszego wiersza skryptu polecenie dla pierwotnego zachowania.
//#pragma option OldPageAction = 1 (dla JavaScript) lub
'#pragma option OldPageAction = 1 (dla VBScript).
Przykład1:
Przykład na przesyłanie danych z formularza HTML (metoda "POST"). Formularz HTML ma na przykład następującą zawartość:
<html><head>
  <title>HtmlForm example</title>
</head>
<body>
  <form action="main.htm" method="POST">
    wartość:
    <input type="text" name="V1" value="22"/>
    <input type="submit" value="Odeślij do serwera"/>
  </form>
</body>
<html>
 
Jeżeli klient wprowadzi wartość na przykład 33 i wyśle formularz, wtedy zostanie wywołane zdarzenie onPageAction na serwerze z nstępująco ustawionymi wartościami:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

pEvent.FilePath = "main.htm";
pEvent.Method = "POST";
pEvent.Data = "V1=33";
 
W zdarzeniu może wtedy znajdować się na przykład taki algorytm:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var sV1;
if (pEvent.FilePath == "main.htm")
{
sV1 = Pm.HTTPGetFormValue("V1", pEvent.Data);
// w zmiennej sV1 znajduje się wartość "33" ...
}
Przykład2:
Przykład wysłania parametrów jako części wymaganej strony z innej strony HTML (metoda "GET"). W dowolnej stronie HTML może znajdować się na przykład odniesienie:
<A href="main.htm?V1=33">Ustaw V1=33</A>
Przykład wysłania parametrów jako części wymaganej nowej strony bezpośrednio z wiersza adresacji przeglądarki internetowej (metoda "GET"). W przeglądarce internetowej wprowadź na przykład:
http://user1/dir/main.htm?V1=33
 
W zdarzeniu może wtedy znajdować się na przykład taki algorytm:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var sV1;
if (pEvent.FilePath == "main.htm")
{
sV1 = Pm.HTTPGetFormValue("V1", pEvent.Params);
// w zmiennej sV1 znajduje się wartość "33" ...
}
Przykład3:
Parsowanie tablicy map zawierających dane plików pozyskanych uploadem od od klienta.
Patrz Konfiguracja wstępna "PmaWebDir - Upload plików z Web klienta do serwera".
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

Historia:
Pm9.00.15: Nowy parametr pEvent.Data.
© MICROSYS, spol. s r.o.