2010-03-29 4 views
6

मैं इस jQuery urlencode और urldecode प्लगइन का उपयोग कर रहा हूं - बहुत सरल और उपयोग करने में आसान है, लेकिन यह अपने मूल रूप में नहीं है, स्ट्रिंग से + हटा दें। होम पेज पर एक टिप्पणी एक पैच का सुझाव देती है लेकिन मुझे नहीं पता कि इसे कैसे कार्यान्वित किया जाए। क्या कोई मेरी मदद कर सकता है?jQuery urlencode/decode पैच मदद

पृष्ठ: http://www.digitalbart.com/jquery-and-urlencode/

//URL Encode/Decode 
$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString(); 
var r=/(^[a-zA-Z0-9_.]*)/; 
    while(x<c.length){var m=r.exec(c.substr(x)); 
    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length; 
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16); 
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;}, 
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/; 
    while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){ 
    b=parseInt(m[1].substr(1),16); 
    t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;} 
}); 

प्रस्तावित पैच:

function dummy_url_decode(url) { 
// fixed -- + char decodes to space char 
var o = url; 
var binVal, t, b; 
var r = /(%[^%]{2}|\+)/; 
while ((m = r.exec(o)) != null && m.length > 1 && m[1] != '') { 
if (m[1] == '+') { 
t = ' '; 
} else { 
b = parseInt(m[1].substr(1), 16); 
t = String.fromCharCode(b); 
} 
o = o.replace(m[1], t); 
} 
return o; 
} 

धन्यवाद!

+6

यह 'encodeURIComponent()' से अलग कैसे है? – jholster

उत्तर

34

उस प्लगइन का बिल्कुल उपयोग न करें; यह व्यर्थ है। जावास्क्रिप्ट पहले से ही अंतर्निहित कार्यों (encodeURIComponent और decodeURIComponent) के साथ यूआरएल एन्कोडिंग और डिकोडिंग का समर्थन करता है। रिक्त स्थान को उस तंत्र के साथ% 20 के रूप में एन्कोड किया गया है।

यदि आपका सर्वर-साइड कोड स्पेस के लिए प्लस संकेत रखता है, तो आप उन लोगों से छुटकारा पा सकते हैं जो साधारण रेगेक्स प्रतिस्थापन के साथ छुटकारा पा सकते हैं क्योंकि चिंता करने के लिए कोई भी "असली" प्लस संकेत नहीं होगा (वे एन्कोड किए गए हैं % 2 बी):

var decoded = decodeURIComponent(encoded.replace(/\+/g, '%20')); 
+0

स्ट्रिंग को PHP के साथ एन्कोड किए जाने पर डीकोडिंग के दौरान '+' कैसे संभाला जाता है? – jay

+0

संपादित देखें; मैं बस डीकोडिंग से पहले उनको ठीक कर दूंगा। – Pointy

+0

उत्कृष्ट @ पॉइंट। यह चाल है। किसी भी कारण यह jQuery एपीआई में नहीं है? – jay