3 באפריל 2011

כיצד לשלוח טופס (Form) לאתר רב-מסר מאתר מבוסס .Net

אנחנו משלימים בימים אלה את הפיתוח של האתר החדש של כספית התוכנה הקלה והמשתלמת להנהלת חשבונות .
האתר החדש מבוסס על Microsoft .Net , ולכן נוצרה לנו בעיה לשלוח פרטי הרשמה לאתר של רב מסר.

מדוע?

הטפסים שרב מסר מייצר באופן אוטומטי נראים כך:

<!-- Generated by responder.co.il -->
<script type="text/javascript">
<!--
function responder_validation(form) {
  var inputs = form.getElementsByTagName('input');
  var selects = form.getElementsByTagName('select');
...
  return true;
}
//-->
</script>

<form method="post" action="http://cp.responder.co.il/subscribe.php" onsubmit="return responder_validation(this);">
...
<input type="submit" value="שלח" />
</form>

קל לשלב את הטופס באתר מבוסס ASP, אבל באתר מבוסס .Net הטופס של רב מסר יתנגש בטופס ברירת מחדל שמייצרת מערכת .Net.

מה הפיתרון?
מתברר שהפיתרון אינו מסובך ודורש שינויים מעטים בטופס של רב מסר:
1. מסירים את התגים של ה-form סביב הטופס של רב מסר. כלומר משאירים את הטבלה והשדות שהוא יוצר אבל מוחקים את <form>  ואת </form>.
2. משנים את הכפתור "שלח" כך:
<input type="button" value="הרשם" onclick="responder_validation(this);"/>

3. משנים את בדיקת הנכונות כך:

<script type="text/javascript">
<!--
function responder_validation(btn) {
  var form1 = btn.form;
  var inputs = form1.getElementsByTagName('input');
  var selects = form1.getElementsByTagName('select');
...
  form1.action = 'http://cp.responder.co.il/subscribe.php';
  form1.submit();
}
//-->
</script>

השינויים די ברורים, אבל הנה הסבר קצר:
  1. הסרנו את תג ה-form  בכדי להשאיר רק את ה-form של .Net.
  2. ה-function של רב מסר מצפה ל-form. במקום זה שלחנו לו button. לכן הוצאנו את ה-form מה-button.
  3. שמו של המשתנה הוא form1, לכן לקחנו את המערך של ה-inputs ושל ה-selects מ-form1.
  4. הטופס של .Net מבצע POST לעצמו, לכן שינינו את ה-action שלו לאתר של רב-מסר.

תגובה 1: