ما هو أفضل الممارسات لتمرير المتغيرات من صفحة HTML واحد إلى آخر؟

StackOverflow https://stackoverflow.com/questions/216536

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا جديدة نسبيا لبرمجة تطبيقات الويب لذلك آمل أن هذا السؤال ليس أساسي جدا للجميع.

وأنا إنشاء صفحة HTML مع نموذج يحتوي DataGrid قابلة للdojox (V1.2) مليئة صفوف من أوصاف أصناف البقالة المختلفة. بعد قيام المستخدم باختيار البند انه مهتما، وقال انه سوف انقر على زر "إرسال".

وعند هذه النقطة، يمكنني الحصول على وظيفة جافا سكريبت لتخزين رقم البند كما متغير جافا سكريبت ولكن أنا لا أعرف كيف لتمرير هذا الرقم إلى صفحة HTML لاحقة.

هل يجب أن يمر معرف كمعلمة سلسلة الاستعلام URL؟ هل هناك أي وسائل أخرى أفضل؟

وتحرير: العملية الشاملة مثل عربة التسوق. وللمستخدم تحديد عنصر من الشبكة ومن ثم في الصفحة التالية المستخدم سوف ملء بعض التفاصيل ومن ثم الخروج.

وأود أن أذكر أيضا أنني أستخدم الكؤوس المقدسة حتى يحدث هذا في صفحة GSP لكن في الوقت الراهن أنه يحتوي فقط HTML.

هل كانت مفيدة؟

المحلول

هل يمكن أن مجرد استخدام حقل إدخال مخفي. أن يحصل تنتقل كجزء من النموذج.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

نصائح أخرى

وانها فكرة جيدة، ولكن أفضل لاستخدام بعض لغة البرمجة النصية مثل JSP، PHP، ASP .... ويمكنك استخدام وظيفة بسيطة والحصول على الطرق.

أفضل طريقة (إيمهو) هو إدراجه في URL

أ href = "HTTP: //NewPage.htm فار = قيمة".

encodeUriComponent قيمة سلسلة

وطريقة واحدة لارسال اكثر من المتغيرات باستخدام POST إلى صفحة أخرى هي لجعل رابط إلى صفحة لاحقة لتقديم مدخلات على شكل حيث السمة العمل هي الصفحة التي تستهدفها. لكل متغير لديك، يمكنك تضمين باستخدام مدخلات من نوع السمة "الخفية" في هذا الشكل، مما يجعل فقط على زر مرئية.

وثمة خيار آخر هو لتوليد الروابط على الصفحة مع شيء من هذا القبيل PHP حيث كنت في الأساس إعادة الناس الاستعلامات GET الحالية بشكل حيوي.

وأخيرا، يمكنك تخزين دائما هذه المعلومات في مجموعة PHP $ _SESSION وليس لديها ما يدعو للقلق باستمرار تمرير هذه المتغيرات من خلال التنقل في الموقع.

واختيارك سيعتمد على مدى العديد من الخيارات الملاحية هناك حيث كنت ترغب في الاحتفاظ بنفس المتغيرات. وسوف تعتمد أيضا على كيفية تأمين كنت ترغب النهاية الخلفية الخاصة بك لتكون والمبلغ الذي ترغب في الإفصاح للمستخدم على شبكة الإنترنت المتقدمة.

إذا كنت تسير فقط في حاجة إلى ID على صفحات متتالية، ثم يمكنك تمرير معرف كمعلمة سلسلة الاستعلام.

ولكن سيكون هناك أوقات عندما كنت في حاجة لنقل مزيد من المعلومات وتمرير مجموعة متنوعة من المعلمات إلى صفحات مختلفة والحاجة إلى الحفاظ على مجموعات مختلفة من المعلمات لصفحات مختلفة يمكن الحصول على القليل من شعر. عندما يكون هذا هو الحال فما استقاموا لكم فاستقيموا أقترح عليك أن تبقي حقل مخفي على شكل وخلق كائن الحجة الذي يقوم بتخزين كل من المعلمات الخاصة بك. تسلسل الكائن مشادة مع JSON وتخزين هذه فيكم حقل مخفي. نشر النموذج مرة أخرى إلى الخادم. عند تحميل الصفحة التالية، إلغاء تسلسل الكائن واسترداد القيم التي تحتاج إليها.

وعلى افتراض أن كنت تقتصر على استخدام صفحات HTML، وأعتقد أن النهج الأفضل لتمرير معرف على طول سلسلة الاستعلام إلى الصفحة التالية. فمن السهل نسبيا لسحب تلك القيمة تتراجع سلسلة الاستعلام على الصفحة التالية. إذا كنت بحاجة إلى أن تكون أكثر من ذلك بقليل التخفي حول تمرير متغير (أو كنت في حاجة إلى متغير أن تستمر لأكثر من صفحة واحدة)، هل يمكن أيضا تعيين ملف تعريف ارتباط واسترجاعها في الصفحة التالية.

ومنذ كنت تحاول القيام بذلك في تطبيق الكؤوس المقدسة لديك خيار استخدام نطاق فلاش. هذا قد لا تجعل أي معنى إذا كنت تريد أن تذهب مباشرة من صفحة HTML واحدة إلى أخرى حيث سيتم تحديد نطاق في وحدة تحكم. إذا كنت لا تحتاج للقيام بأي نوع من المعالجة بين الطلبات، فما استقاموا لكم فاستقيموا أقترح استخدام حقل نموذج مخفي ليبقيه بسيط.

http://grails.org/Controllers+-+Controller+Scopes

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top