DCSIMG
Send the inputs from the "Form" of html page to .aspx file (change the encoding - using escape) - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Send the inputs from the "Form" of html page to .aspx file (change the encoding - using escape)

 

בתקופה האחרונה אני מרגיש שחזרתי לימי הבניים,
 
אני עובד על פרויקט web, אבל אני יכול להשתמש רק ב html ו js, מותר לי לכתוב aspx רק לשימוש כמו webService (כדי לשמור נתונים, ולייבא data)
 
אני משתמש במערכת תוכן של חברה מסוימת (אחד המוצרים הכי גרועים שיכולים להיות),
 
 ומה שיש לי זה html editor, שאני יכול לכתוב בו את קוד ה html שלי.
 
 
בכל מקרה, באחד מהעמודים הייתי צריך לייצר כמה תיבות טקסט, ולחצן "שלח" כדי לשמור את המידע ב DB,
 
לכאורה מאוד פשוט, הקוד אמור להיראות כך:
 

    1     <form action="server.apsx" method="post">

    2         <input type="text" name="txtName" />

    3         <input type="text" name="txtPhone" />

    4         <input type="submit" value="click" />

    5     </form>

 
בשורה ראשונה אני מייצר את הטופס ומגדיר שבזמן לחיצה על ה "submit", ללכת לדף server.aspx.
 
בדף ההוא, אני לוקח את המידע, ושומר ב DB.
 

    6     protected void Page_Load(object sender, EventArgs e)

    7     {

    8         string name = Request["txtName"];

    9         string phone = Request["txtPhone"];

   10     }

 

נראה פשוט, וזה באמת עובד.
 
אבל....
 
 
ברגע שהמשתמש הכניס אותיות עבריות, הייתי מקבל עבור כל תו עברי, את הקוד הבא "ufffd%".
 
חפרתי ברשת, ראיתי שעוד אנשים נתקלו במשהו דומה, אבל לא מצאתי פיתרון.
 
גיליתי שאם אני משנה את ה encoding על ידי קליק ימני בעכבר (באינטרנט אקספלורר) ל UTF-8, זה עובד, אמנם זה גורם שכל הדף הופך ל UTF-8, שזה אומר שכל התווים העבריים בדף יהפכו למין מלל לא ברור, אבל את הערכים מתיבות הטקסט, אני מקבל כמו שצריך.
 
אז חשבתי שפיתרון אחד יהיה, שלפני שאני לוחץ על submit, אני יכול לשנות את ה encoding של הדף.
 
אבל בסופו של דבר מצאתי פיתרון הרבה יותר טוב, ואני מקווה שמי שייתקל בבעייה הזאת, יוכל להשתמש בפיתרון הזה.
 
כתבתי את פונקציית ה JS הבאה:
 

    1 <script type="text/javascript">

    2     function EscapeAllInput(frm)

    3     {

    4         for (var i = 0; i < frm.length; i++)

    5         {

    6             frm[i].value = escape(frm[i].value);

    7         }

    8     }

    9 </script>

 

   10 <form action="server.apsx" method="post"

   11     onsubmit="EscapeAllInput(this)">

   12     <input type="text" name="txtName" />

   13     <input type="text" name="txtPhone" />

   14     <input type="submit" value="click" />

   15 </form>

 
הפונקצייה מקבל טופס, רצה על כל ה inputs שמוגדרים, ועושה ל value המרה ל UTF-8.
 
על הטופס מוגדר שב onsubmit, יש להפעיל את הפונקצייה.
 
בצד השרת, יש להוסיף reference ל - Microsoft.JScript.dll
 
ולכתוב את הקוד הבא:
 

   16 protected void Page_Load(object sender, EventArgs e)

   17 {

   18     string name = GlobalObject.unescape(Request["txtName"]);

   19     string phone = GlobalObject.unescape(Request["txtPhone"]);

   20 }

 
כעת, הכל עובד מצויין.

תוכן התגובה

daniel כתב/ה:

בצד שרת ניתן להשתמש גם ב Server.UrlDecode

במקום קישור ל  Microsoft.JScript.dll

# February 25, 2009 1:01 PM

משה כתב/ה:

אני לא רוצה להעליב או לפגוע, אבל נראה לי ששיטת הטפסים בשרת מעוותת משמעותית את צורת העבודה של אנשים.

אני מבין את בעיית הקידוד שנתקלת בה עכשיו (אגב, יש לה פיתרון פשוט יותר אאל"ט), אבל לענ"ד - זו השיטה הנכונה לעבוד איתה, כזו שלא תתעלל במשאבי השרת על רנדור אלפי פקדים מיותרים.

# March 1, 2009 5:57 PM

Rotem Bloom כתב/ה:

למה אתה לא יכול להחליט עם איזה Globalization לעבוד ב-WEB.CONFIG דרך:<globalization>?

# March 2, 2009 5:29 PM

shlomo כתב/ה:

בגלל שאני כותב בתוך מערכת תוכן, ויש לי רק html

# March 2, 2009 5:43 PM

שלמה גולדברג כתב/ה:

כבר כתבתי בעבר על התיסכול שלי, ממערכות תוכן לא טובות (בלשון המעטה) שהופוכות אותי למתכנת html ו javaScript

# March 2, 2009 10:21 PM

שלמה גולדברג כתב/ה:

מישהי בשם מיכל שלחה לי את השאלה הבאה: יש לי דף ASP שיש בו את הקוד הבא: alert (&#39;&lt;%=ErrMessage%&gt;&#39;

# June 15, 2009 7:48 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 3 and type the answer here:


Enter the numbers above: