هل من الممكن أن يكون الهدف صفحات متعددة مع نشر الصفحة عبر؟

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

سؤال

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

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

هل من الممكن تغيير بطريقة ما الهدف عبر صفحة نشر حيوي على العميل؟

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

ما هي البدائل بلدي، إعادة كتابة الصفحات لإزالة نشر عبر الصفحة والقيام رد إعادة توجيه تمرير البيانات في جلسة؟

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

المحلول

ونعم يمكنك تغيير بالتأكيد action من النموذج. سوف المشي لكم من خلال كيفية القيام بذلك.

أولا، يجب أن يكون النموذج الخاص بك اسم وعنوان العمل المحددة في HTML:

<form name="aformiam" method="post" action="/somewhere/to/go.php">

وبعد ذلك، كنت تريد الذهاب الى تشغيل بعض جافا سكريبت على تقديم النموذج، لذا يجب عليك تعيين الخاصية عند_النقر زر الإرسال الخاص بك إلى وظيفة، مثل ما يلي:

<input type="submit" value="Send Form" onClick="return submitForm();" />

وأخيرا هي وظيفة جافا سكريبت لتغيير الواقع عمل النموذج وإرسال النموذج.

function submitForm() {
  // do anything here you need to determine which URL to post to
  // I am just making an example here
  var targetURL = '/some/url/to/post.php';

  // now we will change the form's action
  document.aformiam.action = targetURL;

  // finally, submit the form by returning true
  return true;
}

لاحظ أنه في الخطوة الأخيرة حيث نعود صحيح، وهذا يقدم النموذج لأن نوع عنصر المدخلات هو submit ويتم تشغيل وظيفة قبل الحدث onClick. إذا كان هذا، على سبيل المثال، وهو نوع button عنصر المدخلات، أو علامة a أو img ثم فإننا بحاجة إلى تحريك النموذج لتقديم باستخدام شيء كما يلي:

document.aformiam.submit();

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

نصائح أخرى

يمكنك محاولة تغيير السمة action النموذج الخاص بك باستخدام جافا سكريبت، قبل تقديم النموذج.

ولسوء الحظ، فإن معظم المتصفحات لا تدعم وظيفة إعادة التوجيه. ويلاحظ حتى RFC :

<اقتباس فقرة>   

وRFC 1945 و RFC 2068 ينص على أن لا يسمح للعميل   لتغيير الأسلوب على طلب إعادة توجيه. ومع ذلك، فإن معظم   تطبيقات وكيل مستخدم موجود علاج 302 كما لو كانت 303   ردا على ذلك، أداء GET على الموقع الحقل القيمة بغض النظر   من طريقة الطلب الأصلي. رموز الحالة 303 و 307 ديك   أضيفت للملقمات التي نود أن نوضح بشكل لا لبس فيه الذي   ومن المتوقع النوع من ردود الفعل من العميل.

وهكذا، IMHO، تقتصر الخيارات لبيانات إما جافا سكريبت action تعديل أو إعادة النشر الإلكتروني من خادم (الخادم الخاص بك يقبل البيانات التي تم نشرها، وتحليل ذلك ويؤدي وظيفة في حد ذاته).

وتخزين البيانات في جلسة (أو مجرد إعادته على POST) ثم إعادة إرساله من من العميل يتطلب إما دعم جافا سكريبت (تقديم النموذج تلقائيا) أو جعل ينقر المستخدم زر "إرسال" مرة أخرى. تستطيع النظر في استخدام هذه الطريقة بمثابة تراجع، وإن كان.

تأكد نقطة action الافتراضي النصي تراجع الخاص بك. إذا كنت نجحت في تعديل action قبل عرضها - كل شيء على ما يرام في هذه المرحلة. إذا فشل شيء، كما هو الحال في حالة تشغيل الجافا يجري تعطيل - جعل تراجع النصي الصفحة الإخراج الخاص بك مع حقل البيانات المخفية (لذلك لا يجب أن يتم تعديل بعد الآن) ومرئية زر الإرسال، ونشر البيانات إلى المكان الصحيح

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