שלח תשובה

זירת השאלות

177
צפיות
13
תשובות

שאלה על טפסים-

,‏ 21 בינואר, 2004

היי
איך אני מקבלת נתונים של טופס שנשלח מאותו הדף? (יש כמה שיטות מה הכי יעיל?באיזה שפה עדיף לקבל את הנתונים?)
נתקלתי במושג שליחת טופס חסוי ע"י הוספת תג INPUT TYPE=HIDDEN
משהו יכול לפרט כי ה MSDN לא ממש מסביר.
תודה

תגיות:

13 תשובות

  1. ניר טייב הגיב:

    אני מציע…
    שתלמד ASP שפה די נינוחה שנתמכך בהרבה מקומות ועכשיו לשאלה שלך
    יש שיטה ב-ASP שבספרים של הוד עמי קוראים לה "פייג’ רינטרי" פשוט מאוד לא מציינים action בתגית ה-form וכך זה נשלח לעמוד עצמו הקבלה של הנתונם מתבצעת ע"י האובייקט request בשילוב אחת מהשיטות הבאות ::: form, queryString
    השיטה form מקבלת נתונים מטופס שנשלח בשיטת post (אל תוך העמוד)
    ו-queryString נשלח מטופס שנשלח בשיטת get (שורת הדפדפן)

    בהנחה שהשתמשת בשיטה post אז כך צריך להיראות הקוד :::

    <form method="post">
    <input type="submit" value="nir" name="nirTheKing" />
    </form>

    <% =request.form("nirTheKing") %>

    ע"י השימוש בפקד נסתר
    type=hidden
    אפשר לשלוח נתונים שהמשתמש לא ממלא או בוחר למשל ב-ASP בשביל לשלוח את ה-IP של המשתמש משתמשים באובייקט request עם השיטה serverVariable כך:::

    <% =request.serverVariables("remote_adder") %>
    // למציאת ה-IP של המשתמש

    וכך מקבלים את ה-IP של המשתמש שהוא יכול להיכנס אל תוך מסד נתונים

    מקווה שמובן ואם לא תמיד אפשר להיכנס למדריך כאן של ASP

  2. mrmistory הגיב:

    ואיך בלי ACTION אתה שולח ….
    טקסט או מספר מסויים ?
    הרי עושים ככה לדוגמא
    action=file.asp?id=3
    ובלי action איך אתה מקבל את המספר באותו דף ???

  3. squarepusher הגיב:

    אוקי…
    כנראה שהייתי צרכה לציין שאני משתמשת ב ASP ולפרט יותר…את כל מה שכתבת אני כבר מכירה (אגב אפשר ב action לכתוב את שם הדף עצמו) .חסר לי קצת ידע כדי לסגור את הענין הזה…
    בכל אופן את הבדיקות לשדות בטופס אני עושה ב JS ואת הנתונים של הטופס אני מקבלת ב ASP .אוקיי שאלה מספר 1:
    לקבל את הנתונים ע"י:
    שימוש ב item, key, count: אני בודקת ע"י התנאי הבא אם נשלחו לי פרמטרים מהטופס: if Request.Form.Count>0 ואז לקבל ע"י:
    Request.Form.Item(1)
    או ע"י:
    Request.Form (name)
    או אולי ב JS?
    יש כל כך הרבה שיטות מה עדיף?נו שאלת יעילות…..
    שאלה שנייה:
    את הצגת הנתונים (שקיבלתי מהטופס) בדף אני עושה כך:
    אני מציגה אותם בשדה מסוג class שה visibility שלו היא hidden.את השינו ל visible אני עושה ב js , אבל את קבלת הנתונים אני יודעת רק ב ASP (או ב JS לשדה של טקסט בלבד).
    אז יש לי פה סלט של שתי שפות.
    עצה בבקשה
    תודה (:

  4. ניר טייב הגיב:

    למדת ASP???
    כי כך ה-ASP עובד ולא צריך להכניס נתונים כאלו אל שדה ה-action כדי לשלוח נתונים וקבלתם ע"י ה-ASP
    עצם השימוש בערך get של מאפיין method של פקודת ה-form נותן את העברתם הנתונים אל שורת הכתובת תראה את הדוגמא הבאה :::


    <form method="get">
    <input type="text" name="textFields" value="ניר המלך" />
    <input type="submit" />
    </form>

    <% =request.queryString("textFields") %>

    עכשיו אם בשורת הכתובת אחרי סיום הסוג של העמוד לצורך הדוגמא bla.asp
    מופיע הסימן שאלה שמעיד על תחילת קבלת משתנים שאלים ניתן לפנות ע"י request.queryString בדגמא שנתתי יש רק שדה מילוי אחד ואחרי שלוחצים על לחצן השליחה זה מה שיופיע בשורת הכתובת :::

    bla.asp?textFields=ניר המלך

    קוד הנ"ל ידפיס את התוצאה הבאה :::
    "ניר המלך" (בלי הגרשיים)

    הקוד הנ"ל משתמש במשתנים המוגדרים בשורת הכתובת

  5. mrmistory הגיב:

    1) למדתי ויודע… 2)….
    נסה בשיטה שלך בלי ACTION לשלוח משהוא שאתה רוצה לקבל אותו QUERYSTRING אם FORM הוא POST.
    לא תוכל ולא תצליח.
    ידידי, אני יודע ASP ובניתי לא קצת מערכות כולל פורום בסגנון PHP (לא בטוח ששמעת עליו) ולמרות זאת תמיד יש מה ללמוד וזה לא קשור ל "למדת ASP"
    אין קשר בין מחת לתחת.

    לבחורה ששאלה שאלה, אפשר ועוד איך וככה אני עושה לרשום ב-ACTION את שם הקובץ שאת עובדת איתו.

  6. ניר טייב הגיב:

    שמע!!!
    לא יודע מאיפה למדת ואני מאמין לך שיש לך מערכות יפות וחזקות
    אני לא רוצה לריב איתך אבל אפשר להשתמש בטופס שאין לו action כדי לשלוח את הנתונים לאותו דף כמובן שאם ברצונך לשלוח נתונים לדף אחר או לאותו דף אתה יכול לשים את ה-action זה פשוט קיצור דרך קטן שעושה שהדף ישלח לעצמו

  7. mrmistory הגיב:

    אתה כנראה לא הבנת מה שאלתי,נעזוב זה

  8. squarepusher הגיב:

    אוקיי…
    תודה על התשובה .אפשר עזרה נוספת? לא ממש ענית לי על החלק העיקרי …
    אגב בקשר ל hidden form התכוונתי להוספת תג :
    <input type=’hidden’ name=whatever>לפני כפתור סבמיט.
    זה הופך את המשתנים לנסתרים… איך מקבלים אותם?

  9. זהר פלד הגיב:

    same same…
    ה type של ה input לא משפיע על דרך השליחה או הקבלה של הנתונים…
    כל עוד זה תג input, את ניגשת אליו ב ASP באותה השיטה תמיד – ע"י שימוש בשם שלו ב collection המתאים של Request.

    לגבי page reentry, זה לא ממש מומלץ, מסיבות כאלו ואחרות שאין לי כוח לפרט עכשיו. השיטה המומלצת כדי לדמות page reenrty היא לשלוח את הטופס לעמוד ASP אחר, שמבצע את מה שצריך על הנתונים שהוא מקבל מהטופס, אבל לא מוציא שום פלט לדפדפן פרט ל Response.redirect חזרה לעמוד הטופס.

    לגבי שאלת היעילות, למיטב ידיעתי הכי יעיל הוא בדיקה ב JS לפני שליחת הטופס, אבל זה כמובן לא פותר אותך מבדיקה בשרת, כי תמיד יש את האופציה "לכבות" את התמיכה ב js בדפדפן (ואני מכיר לפחות אדם אחד שבאמת עשה את זה).
    הבדיקה הכי יעילה בשרת, למיטב ידיעתי, היא פשוט לבדוק אחד מפרטי החובה שבטופס האם הוא מכיל מידע. לדוגמא, בטופס שפרט חובה בו הוא, נאמר, שם פרטי, ואני קראתי ל input שלו בשם fName,
    בשרת אבדוק 0<>(("if trim(request("fName.

  10. squarepusher הגיב:

    סוף סוף…
    תשובה לעניין.
    אוקיי בסופו של דבר עשיתי page reentry (רק עכשיו ראיתי את התשובה שלך).זה קריטי ?למה זה לא ממומלץ?
    ובנוגע ל hidden form רציתי לדעת אם יש דרך כן לראות את המשתנים ואם יש לזה חסרונות (גם השתמשתי ונראה לי שאני אתחיל להשתמש בזה תמיד…)
    תודה רבה .

  11. זהר פלד הגיב:

    את מכירה את הקטע שכשמנסים לעשות
    back את מקבלת אזהרה בדפדפן על זה ש "פג תוקף הדף"?
    זה קורה עם page reentry… כדי להמנע מהמצב המעצבן הזה, משתמשים בטכניקה שדיברתי עליה בהודעה הקודמת שלי….

    בנוגע ל input type=hidden, הוא פקד חוקי לחלוטין, ושימושי מאוד. אין לו חסרונות מיוחדים. (לצרכי פיתוחדיבוג, אני נוהג להשתמש ב type=text גם במקום ה hidden, רק כדי לראות שהערך הנכון מגיע אליהם, ורק כשאני סגור על עצמי שהכל עובד כמו שצריך, אז אני הופך אותם ל hidden כמו שהם אמורים להיות).

    אה, ו…. bkf….

  12. ניר טייב הגיב:

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

שלח תשובה