2010-11-25 12 views
11

के बाद अनुरोध भाग प्राप्त करें मेरी वेब साइट में AJAX- संचालित खोज है, जो गहरे लिंकिंग का उपयोग करती है। जब उपयोगकर्ता किसी लिंक पर ...हैश साइन

http://example.com/articles#/?tags=Mac%20OS,review 
इस प्रकार

... टैग "मैक ओएस" और "समीक्षा" पहले से ही एक खोज फॉर्म और लेख, "मैक ओएस" और "समीक्षा" पृष्ठ पर प्रस्तुत किया जाना चाहिए करने के लिए संबंधित में चयनित किया गया चाहिए ।

मैं परिदृश्य निम्नलिखित है, ठीक करने के लिए है कि एक की जरूरत

  1. उपयोगकर्ता लिंक http://example.com/articles#/?tags=Mac%20OS
  2. इस प्रकार प्रारंभिक पृष्ठ प्रतिपादन के दौरान, सभी लेख प्राप्त किए गए
  3. ग्राहक पक्ष पर कर रहे हैं, हैश-भाग पार्स किया गया है और केवल "मैक ओएस" -संबंधित लेख AJAX के माध्यम से अनुरोध किया जाता है।
  4. क्लाइंट को "मैक ओएस" -र्टिकल प्राप्त होता है और चरण 2 पर प्राप्त सभी लेखों को प्रतिस्थापित करता है। इसके अलावा यह खोज-फ़ॉर्म पर चुने गए "मैक ओएस" टैग को भी चिह्नित करता है।

यहां समस्या - डुप्लीकेट लेख प्रतिपादन है, जो उपयोगकर्ता के लिए वास्तव में खराब दिखता है। वह सभी लेख देखता है, और कुछ सेकंड के बाद, उन्हें "मैक ओएस" -र्टिकल के साथ बदल दिया जाएगा। ,

  1. उपयोगकर्ता लिंक http://example.com/articles#/?tags=Mac%20OS
  2. सर्वर को पार्स करता हैश-भाग और रिटर्न "मैक ओएस" से संबंधित लेख
  3. ग्राहक समझता है इस प्रकार है कि "मैक ओएस":

    मैं परिदृश्य एक निम्न होना चाहिए -आर्टिकल पहले से ही हैं और कुछ भी नहीं करता है। यह सिर्फ चयनित के रूप में "मैक ओएस" टैग को चिह्नित करता है। ,

    /?tags=Mac%20OS 
    

    मैं के बाद अनुरोध पैरामीटर का उपयोग नहीं कर सकता क्योंकि मैं AJAX और गहरे जोड़ने का उपयोग करें:?

ऐसा करने के लिए, मैं अनुरोध स्ट्रिंग के हैश-भाग प्राप्त करने के लिए की जरूरत है। के साथ? -part, ब्राउज़र को पृष्ठ को फिर से लोड करने के लिए मजबूर किया जाएगा। मुझे पेज को पुनः लोड किए बिना कुछ भी करने की ज़रूरत है।

आपकी सहायता की बहुत सराहना की जाएगी।

धन्यवाद।

उत्तर

14

हैश के बाद एक यूआरएल का हिस्सा सर्वर पर नहीं भेजा गया है, इसलिए आप इसे संसाधित नहीं कर सकते हैं। आप क्लाइंट-साइड कोड में यूआरएल के उस हिस्से को निकाल सकते हैं जो आपके अजाक्स अनुरोध को बनाता है और इसे पैरामीटर के रूप में भेजता है।

0

@NickFitz सही है, लेकिन यदि आप भेजना चाहिए जो कुछ भी # हैश/पाउंड प्रतीक के बाद आता है, तो आप URL एन्कोड किए गए वर्ण कि # जो %23 है प्रतिनिधित्व कर सकते हैं।

तो %23 और %23 के बाद जो कुछ भी आता है उसे सर्वर पर भेजा जाएगा। यदि आप आधुनिक वेब सर्वर का उपयोग कर रहे हैं, तो वे स्वचालित रूप से पहचानेंगे कि %23# है। रेल पर रूबी में, रैक आपके लिए यह करता है।

संबंधित मुद्दे