2012-06-14 16 views
24

वर्तमान में करने के लिए सभी रिक्त स्थान बदल देता है, हर जगह मैं serialize का उपयोग मैं इस तरह इसका इस्तेमाल करने के लिए है:jQuery serialize प्लस

.serialize() की जगह (/ +/जी, '% 20');।

अन्यथा फॉर्म डेटा में किसी भी स्थान को + के लिए गुप्त किया जाएगा। क्या कोई सेटिंग है जो इसे डिफ़ॉल्ट बना सकती है।

उत्तर

0

विश्वास न करें कि कोई डिफ़ॉल्ट है, आपको one of these ways में स्ट्रिंग को एन्कोड करने की आवश्यकता होगी।

हालांकि आप अपने खुद के प्लगइन बना सकते हैं:

jQuery.fn.serializeAndEncode = function() { 
    return escape(this.serialize()); 
} 

$(myForm).serializeAndEncode(); 
+2

कृपया का उपयोग नहीं करते 'भागने '। इसे [कई वर्षों से बहिष्कृत किया गया है] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5) और इसे 'encodeURIComponent' के साथ प्रतिस्थापित किया जाना चाहिए मैट रॉय का उदाहरण। – Husky

1

मैं एक ही बात करना था। समाधान टेरी ने भाग लिया(), काम नहीं करता है। = और & एन्कोड किए जा रहे हैं (हम इसे नहीं चाहते हैं) और + अभी भी वहां हैं।

मैं क्या मेरे अपने समारोह पैदा कर रही है क्रमानुसार करने:

var QueryString = ""; 
$(selector).each(function(index) { 
    if(QueryString != "") QueryString += "&"; 
    QueryString += $(this).get(0).id + "=" + encodeURIComponent($(this).val()); 
}); 
3

मस्ती के लिए, यहाँ एक विकल्प है कि एक अस्थायी चर का उपयोग नहीं करता है:

$.fn.serializeAndEncode = function() { 
    return $.map(this.serializeArray(), function(val) { 
     return [val.name, encodeURIComponent(val.value)].join('='); 
    }).join('&'); 
}; 

$("#formToSerialize").serializeAndEncode(); 
+0

यह वही था जो मैं अपने आप कर रहा था। –

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