2009-11-15 7 views
24

'& url =' + encodeURIComponent (url) का उपयोग करना; ब्राउज़र से सर्वर पर एक यूआरएल पास करने के लिए यूआरएल एन्कोड किया जाएगा, लेकिन जब सर्वर पर डीकोड किया जाता है, तो यूआरएल के पैरामीटर को अलग-अलग पैरामीटर के रूप में व्याख्या किया जाता है, न कि एकल यूआरएल पैरामीटर के हिस्से के रूप में।जावास्क्रिप्ट: यूआरएल पैरामीटर के रूप में यूआरएल पास करने का अनुशंसित तरीका क्या है?

यूआरएल पैरामीटर के रूप में यूआरएल पास करने के लिए अनुशंसित तरीका क्या है?

उत्तर

33

encodeURIComponent() को काम करना चाहिए। उदाहरण के लिए,

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10") 

पैदा करता

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10" 

(जो मूल्य में किसी भी '&' या नहीं है '?')।

param["url"] = "http://a.com/?q=query&n=10" 

मुझे यकीन है कि क्या सर्वर आप उपयोग कर रहे नहीं कर रहा हूँ (जैसे रेल, Django, ...) लेकिन यह है कि: अपने सर्वर इस यूआरएल हो जाता है, यह डिकोड करने के लिए है कि प्राप्त करने के लिए मूल में सक्षम होना चाहिए किसी भी सामान्य प्रणाली पर "बॉक्स से बाहर" काम करना चाहिए।

-1

यूआरएल एन्कोड करने के लिए एस्केप() का उपयोग करें, यह एम्पर्सेंड को एन्कोड करेगा ताकि ऐसा न हो।

+3

'escape'' encodeURIComponent' के समान है, लेकिन '+' वर्ण, और किसी भी गैर-ASCII वर्णों के लिए गलत आउटपुट उत्पन्न करता है। इसका कभी भी इस्तेमाल नहीं किया जाना चाहिए। – bobince

3

'& url =' + encodeURIComponent (url) का उपयोग करके; ब्राउज़र से सर्वर पर यूआरएल पास करने के लिए यूआरएल

हां, आपको यही करना चाहिए। encodeURIComponent क्वेरी स्ट्रिंग के हिस्से को डालने के लिए टेक्स्ट मान को एन्कोड करने का सही तरीका है।

लेकिन जब यह सर्वर पर डीकोड किया जाता है, तो यूआरएल के पैरामीटर को अलग-अलग पैरामीटर के रूप में व्याख्या किया जाता है, न कि एकल यूआरएल पैरामीटर के हिस्से के रूप में।

फिर सर्वर वास्तव में बहुत टूटा हुआ है। यदि वास्तव में यह हो रहा है, तो आपको इसे सर्वर के अंत में ठीक करने की आवश्यकता है।

कोड?

-2

ईमानदारी से, Google यूआरएल शॉर्टनर के साथ जाएं। फिर आप यूआरएल क्वेरी स्ट्रिंग में यूआरएल कोड का उपयोग कर सकते हैं: http://example.com/url/A7dh3

अपने आवेदन में, इसे ले लें और Google यूआरएल शॉर्टनर डोमेन नाम प्रीपेन्ड करें, और रीडायरेक्ट करें। यह Google Analytics के माध्यम से यूआरएल पर भी ट्रैकिंग जोड़ता है। इस दृष्टिकोण में बहुत सारे फायदे हैं। बस एक छोटा कोड और जोड़ा ट्रैकिंग डेटा भी।

0

मैंने कोशिश नहीं की, लेकिन BASE64 एन्कोडिंग/डिकोडिंग भी काम करनी चाहिए।

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