Pertama adalah GET dan yang kedua adalah POST.
Cara GET aku rasa semua orang dah tau.
page yang hantar tambah QueryString dalam URL,
page yang menerima pulak,
baca QueryString tersebut guna Request.QueryString["QueryStringName"].
masalahnya, bila hantar data guna GET, agak kantoi di situ, sebab dalam URL ada terang terang tulis data ape yang kita pass.
macam mane tak kantoi, kalau dah dalam URL tulis macam ni:
http://www.alamatrumahopahkau.com/newPage.aspx?username=jackiechan&password=tahikla123
aku rasa, mana-mana manusia yang celik IT dah sah sah boleh baca data ape yang kita hantar.
Maka, untuk mengelakkan
Dan nak tau salah satu perkara yang paling cilake skali dalam ASP.Net? nak POST data.
Serious. Setengah hari aku dok carik solution macam mana nak buat.
Selepas mencuba beberapa kali nak POST data guna C# punye code behind,
Last last aku givap. (╯°□°)╯︵ ┻━┻
Cara terbaik? Guna javascript terus untuk POST data.
Javascript ape yang aku nak guna? Haa itu adalah satu masalah.
Untuk orang bengap JavaScript macam aku ni, kenalah mengharapkan Google sebagai teman setia. Selongkar punye selongkar google, last last aku pun jumpelah code javascript yang aku berkenan.
JavaScript yang ini akhirnya menjadi pilihan.
var f = document.createElement('form'); f.setAttribute('method','post');
f.setAttribute('action','NewForm.aspx');
f.setAttribute('id','redirectForm'); var i = document.createElement('input'); i.setAttribute('type','text'); i.setAttribute('name','userName'); i.setAttribute('value','abuhensem'); f.appendChild(i); i = document.createElement('input'); i.setAttribute('type','text'); i.setAttribute('name','userID'); i.setAttribute('value','10234'); f.appendChild(i); i = document.createElement('input'); i.setAttribute('type','text'); i.setAttribute('name','firstname'); i.setAttribute('value','Mohd Abu'); f.appendChild(i);" i = document.createElement('input'); i.setAttribute('type','text'); i.setAttribute('name','lastname'); i.setAttribute('value','Ali Husin'); f.appendChild(i); document.getElementsByTagName('body')[0].appendChild(f); f.submit();
Abaikan kod di atas. aku tepek sebagai rujukan je.
Dan kali ini, dengan adanya javascript sebagai rujukn, maka bolehlah aku nak guna satu trick yang dipanggil,
"create form guna JavaScript, dan submit guna code behind."
Begini caranya.
Katalah aku nak hantar data daripada OldPage.aspx ke NewPage.aspx guna POST.
So, kat OldPage.aspx.cs, kat button nak submit tu, aku taip macam ni.
string userName = TxtUsername.Text; string password = TxtPassword.Text; string JavaScript = "<script type='text/javascript'> " + //create form "var f = document.createElement('form');" + "f.setAttribute('method','post'); " + "f.setAttribute('action','NewPage.aspx');" + "f.setAttribute('id','redirectForm');" + //create data yang hendak dipostkan "var i = document.createElement('input'); i.setAttribute('type','text');" + "i.setAttribute('name','userName');" + "i.setAttribute('value','" + userName + "'); f.appendChild(i);" + //repeat kalau nak tambah lagi data, contohnya "var i = document.createElement('input'); i.setAttribute('type','text');" + "i.setAttribute('name','password');" + "i.setAttribute('value','" + password + "'); f.appendChild(i);" + //tutup form dan submit form "document.getElementsByTagName('body')[0].appendChild(f);" + "f.submit();" + "</script>"; //Guna RegisterStartupScript untuk run JavaScript dalam code behind ClientScript.RegisterStartupScript(this.GetType(), "", JavaScript);
Lepas tu, kat page yang menerim data tu pulak, kita baca POST data macam biasa,
iaitu gun Request.Form["namavariable"].
Eleh, sebenarnya korang dah tau kan?
So, masuk NewPage.aspx.cs pulak, aku tulis macam ni.
string userName_OldPage = string.Empty; string password_OldPage = string.Empty; if (Request.Form["userName"] != null) userName_OldPage = Request.Form["userName"]; if (Request.Form["password"] != null) password_OldPage = Request.Form["password"];
Pastu, pandai pandai la nak buat ape dengan data tersebut
Berjaya!
Mari kita meraikan kejayaan kita dengan daun saderi.
No comments:
Post a Comment