هل من الممكن أن يكون الهدف صفحات متعددة مع نشر الصفحة عبر؟
-
06-07-2019 - |
سؤال
ولدي صفحة على شبكة الإنترنت أن يستخدم نشر الصفحة عبر لنشر إلى صفحة مستهدفة مختلفة.
لقد نشأت الشرط الجديد الذي يعني أنه يمكن أن يكون هناك 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
قبل عرضها - كل شيء على ما يرام في هذه المرحلة. إذا فشل شيء، كما هو الحال في حالة تشغيل الجافا يجري تعطيل - جعل تراجع النصي الصفحة الإخراج الخاص بك مع حقل البيانات المخفية (لذلك لا يجب أن يتم تعديل بعد الآن) ومرئية زر الإرسال، ونشر البيانات إلى المكان الصحيح