2009-02-27 9 views
34

मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो एक क्वेरी स्ट्रिंग मान के रूप में गुजरता है अन्य क्वेरी स्ट्रिंग। औरक्वेरी स्ट्रिंग को एन्कोड कैसे करें ताकि यह जावास्क्रिप्ट में किसी अन्य क्वेरी स्ट्रिंग का मान हो?

var url = 'http://www.somesite.com/?somequery='; 
url += escape('?key=value1&key2=value2'); 
window.location = url; 

यह फ़ायरफ़ॉक्स में http://www.somesite.com?somequery=?key1=value1&key2=value2 के रूप में समाप्त होता है IE7 कि जिसका अर्थ है:

दूसरे शब्दों में, मैं क्वेरी स्ट्रिंग होना चाहते हैं:

http://www.somesite.com/?somequery=%3fkey%3dvalue1%2520%26%2520key2%3value3 

हालांकि, मैं इस तरह अनुप्रेषित अगर मैं क्वेरी स्ट्रिंग को सही तरीके से पार्स नहीं कर सकता।

मैंने एन्कोडुरिकॉम्पोनेंट का उपयोग करने का भी प्रयास किया जो कि काम नहीं करता था।

somequery मूल्य से बचने के लिए रीडायरेक्ट को मजबूर करने के लिए कोई अन्य फ़ंक्शन या हैक है ??

उत्तर

65

encodeURIComponent काम करेगा। (आप या अग्रणी क्या स्क्रिप्ट उम्मीद कर रही है पर निर्भर करता है नहीं चाहते हो सकता है, हो सकता है '?'।)

var c= 'd e' 
var query= '?a=b&c='+encodeURIComponent(c); 
var uri= 'http://www.example.com/script?query='+encodeURIComponent(query); 
window.location= uri; 

करने के लिए मुझे ले जाता है:

http://www.example.com/script?query=%3Fa%3Db%26c%3Dd%2520e

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

एस्केपिंग/अनसस्केप() एन्कोडिंग क्वेरी पैरामीटर के लिए गलत बात है, यह यूनिकोड वर्ण और प्लस गलत हो जाता है। लगभग कोई ऐसा मामला नहीं है जहां से बचें() वह है जिसे आपको वास्तव में चाहिए।

+0

हाँ, मुझे पूरा यकीन है कि बच निकला है। अच्छा निर्णय। –

+0

आपको [query] – KooiInc

+0

में '%' होने का समाधान करना पड़ सकता है यह काम करता है - हालांकि क्वेरी स्ट्रिंग को पार्स करते समय मुझे इसे दो बार डीकोड करना होगा। ऐसा लगता है कि जब इसे एक बार एन्कोड किया जाता है, तो इसे ब्राउज़र द्वारा डीकोड किया जाएगा, लेकिन जब इसे दो बार एन्कोड किया जाता है तो इसे डीकोड नहीं किया जाएगा। अजीब। – rmw

0
javascript:alert(escape('?key=value1&key2=value2')); 

मेरे लिए ठीक काम करता है?

2

मूल escape विधि यह करता है। लेकिन आप एक कस्टम एन्कोडर भी बना सकते हैं जैसे:

function encodeUriSegment(val) { 
    return encodeUriQuery(val, true). 
      replace(/%26/gi, '&'). 
      replace(/%3D/gi, '='). 
      replace(/%2B/gi, '+'); 
} 

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

0
function downloadFile(){ 
     var filePath = "C:/Users/HP/Desktop/Project Folder/DemoProject/"; 

     var fileInfo = "Error_Issue Minor Cosmetic & Major Fatal Issues (Demo_Project) (2017)_GeneratedOn_12_21_2017 21924 AM.xlsx"; 
     if((filePath != undefined && filePath.length > 0) && (fileName != undefined && fileName.length > 0)){ 
     var downloadUrl = "../download?fileName="+encodeURIComponent(fileName)+"&filePath="+encodeURIComponent(filePath); 
     $window.location = downloadUrl; 
     }else{ 
     alert("Please define a fileName for downloading..."); 
     } 
} 
संबंधित मुद्दे