سؤال

أنا أكتب JSP/Servlet وأحاول الحصول على الجزء الأساسي من URI على سبيل المثال:

blabla.rdf#mark

كيف أحصل على علامتي من طلبي؟بوضوح request.getParameter() لا يعمل؟

أي مساعدة سيكون موضع ترحيب.

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

المحلول

وهذا غير ممكن كعملاء لا ترسل "مرساة جزء" إلى خادم

وكمثال على ذلك، وهنا طلب الدقيق الذي الكروم ولدت بعد تقديم http://example.com/#foobar (المسجلة باستخدام يريشارك):

GET / HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: "b300b4-1b6-4059a80bfd280"
If-Modified-Since: Tue, 15 Nov 2005 13:24:10 GMT

وانظر، لا #foobar. لذلك ليس هناك طريقة تطبيق ملقم يمكن قراءتها.

هل يمكن أن تفعل بعض جافا سكريبت سحرية لتخزين مرساة في الكعكة أو في حقل إدخال مخفي أو أيا كان الفودو كنت في. ولكن فإنه لن ينجح أي وقت مضى للطلبات التي لا تنشأ من المواقع الخاصة بك. ومن أبسط لجعل كل ما تحتاجه من جانب الخادم من سلسلة الاستعلام واستخدام مرساة فقط للمهام جافا سكريبت فقط - أو استخدامه للتنقل داخل وثيقة HTML بسيطة - ولكن هذا حتى 90S؛)

وهنا يكمن جزء مهم من RFC المذكورة 1808:

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

لاحظ أن معرف جزء (و "#" التي تسبق ذلك) هو   لا تعتبر جزءا من URL. ومع ذلك، نظرا لأنه عادة   في إطار سلسلة نفس عنوان URL، يجب أن يكون قادرا على محلل   التعرف على جزء عندما كان موجودا وضعه جانبا كجزء من   عملية التوزيع.

نصائح أخرى

أعتقد أنك تريد إنشاء تطبيق ويب Ajax يمكن وضع إشارة مرجعية عليه وتريد استبدال أجزاء معينة من DOM دون إعادة تحميل الصفحة بأكملها.(وإلا يمكنك استخدام معلمات الاستعلام.) As com.sfussenegger يذكر أن المتصفح لا يرسل "مِرسَاة"إلى الخادم.الحل على جانب العميل.

جافا سكريبت window.location.hash يعطي معلومات المرساة.يمكنك إلحاق معالج الحدث بـ window.onload الحدث الذي يمسك window.location.hash وينقله إلى الخادم في Ajax XHttpRequest.يمكنك التقاط الاستجابة وبناءها في DOM.

لسوء الحظ، إنها رحلتان ذهابًا وإيابًا بين خادم العميل.

المزيد عن هذا في ajaxpatterns.

وهذا الحل سوف تعمل فقط <م> بعد تم دفع على زر إرسال، ولكن: هل يمكن استخدام جافا سكريبت لوضع قيمة خفية على النموذج الخاص بك التي تم تعيينها إلى قيمة document.location. ومن شأن ذلك أن أقول لكم بالضبط ما المتصفح تشهد كما عنوانك.

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