2010-07-23 21 views
9

मैं मूल्य में & साथ एक इनपुट तत्व है:कैसे बचें और jQuery में POST अनुरोध में कैसे?

<input type="checkbox" value="Biografie, životopisy, osudy, Domácí rock&amp;pop" /> 

जब मैं एक ajax अनुरोध के माध्यम से भेजने का प्रयास करें:

$.ajax({ 
    type: "POST", 
    url: "/admin/kategorie/add/link.json", 
    data: "id="+id+"&value="+value+"&type="+type, 
    error: function(){alert('Chyba! Reloadněte prosím stránku.');} 
}); 

पद डेटा है कि वास्तव में भेजा जाता है है:

id: 1 
pop: 
type: e 
value: Biografie, životopisy, osudy, Domácí rock 

* ध्यान दें कि डेटा में सभी चर परिभाषित किए गए हैं और मान में $ (thatInputElement) .attr ('value') शामिल है।

मैं &amp; से ठीक से कैसे बच सकता हूं ताकि पोस्ट क्षेत्र value में Biografie, životopisy, osudy, Domácí rock&amp;pop होगा?

उत्तर

24

आप एक वस्तु के रूप में अपने data विकल्प सेट और jQuery दे सकते हैं इस तरह, एन्कोडिंग कार्य करें:

$.ajax({ 
    type: "POST", 
    url: "/admin/kategorie/add/link.json", 
    data: { id: id, value: value, type: type }, 
    error: function(){ alert('Chyba! Reloadněte prosím stránku.'); } 
}); 

आप कर सकते हैं एनकोड encodeURIComponent() का उपयोग कर प्रत्येक मान, इस तरह:

encodeURIComponent(value) 

लेकिन अधिकांश मामलों में पहला विकल्प बहुत आसान/छोटा :)

+1

धन्यवाद, encodeURIComponent के साथ इस चाल किया था के साथ बेहतर कर रहे हैं, मुझे लगता है मैं डिकोड कर सकते हैं यह urldecode ($ var) का उपयोग कर सर्वर-साइड (PHP) पर? – cypher

+0

@cypher - इसे स्वचालित रूप से डीकोड किया जाना चाहिए, लेकिन यह PHP अनुप्रयोग के बाद से हमेशा के लिए रहा है, इसलिए मुझे उस पर दोबारा जांचें। –

+0

वाह, मैं 2 साल से यह गलत कर रहा हूं! इससे आज मेरा काम बन गया। – Chris

0

जावास्क्रिप्ट फ़ंक्शन "एस्केप()" को काम करना चाहिए और सर्वर पर विधि HttpUtility.UrlDecode को अनदेखा करना चाहिए। कुछ अपवाद हो सकते हैं। इसके अतिरिक्त यदि आपको क्लाइंट पर डीकोड करने की आवश्यकता है, तो क्लाइंट पर समकक्ष "अनदेस्केप()" है।

+0

वास्तव में आप "encodeURIComponent" – Pointy

0

HTML वर्ण कोड का उपयोग करें ई & के लिए ई: \ u0026

+0

संदर्भ के लिए इस संबंधित पोस्ट को देखें: http://stackoverflow.com/questions/355043/how-do-i-escape-an-ampersand-in-a-javascript-string-so-that-the-page-will- वैध – EAMann

2

क्या आपने इस वाक्यविन्यास को आजमाया है?

data: {"id":id, "value": value, "type": type } 
+0

यह वाक्यविन्यास काम करता है, और निक के उत्तर में वर्णित बेहतर विकल्प है, क्योंकि jQuery आपके लिए दृश्यों के पीछे ऑब्जेक्ट को एन्कोड करेगा। – Chris

0

आप एक वस्तु बना सकते हैं और पारित बजाय साथ कि हो सकता है:

vars = new Object(); 
vars.id = id; 
vars.value = value; 
vars.type = type; 

$.ajax({ 
    type: "POST", 
    url: "/admin/kategorie/add/link.json", 
    data: vars, 
    error: function(){ alert('Chyba! Reloadněte prosím stránku.'); } 
}); 
संबंधित मुद्दे