के बजाय JSON कैसे भेजें, jQuery
querystring
के चरण में json
को वास्तविक तरीके से कैसे भेज सकता है?jQuery AJAX, QueryString
$.ajax({
url : url,
dataType : 'json', // I was pretty sure this would do the trick
data : data,
type : 'POST',
complete : callback // etc
});
वास्तव में हो जाएगा ताकि कन्वर्ट अपने ध्यान से एक querystring
को json
तैयार किया। कष्टप्रद चीजों में से एक यह है कि आपकी ऑब्जेक्ट में array: []
array[]: []
में परिवर्तित हो जाएगी, शायद querysting
की सीमाओं के कारण।
-update-
उचित विधि नीचे दिए गए उत्तर में पाया जा सकता:
$.ajax({
url : url,
dataType : 'json',
contentType: 'application/json; charset=UTF-8', // This is the money shot
data : data,
type : 'POST',
complete : callback // etc
});
कृपया ध्यान दें कि इस उचित CORS हेडर सर्वर साइड की आवश्यकता है, और कुछ उदाहरणों के विपरीत नेट पर, अनुमति-शीर्षलेख वाइल्डकार्ड का उपयोग नहीं कर सकता। (अनुमति दें-उत्पत्ति कर सकते हैं।)
{
Content-Type : 'application/json',
Access-Control-Allow-Origin : '*',
Access-Control-Allow-Headers : 'Content-Type' // You cannot use '*'
}
-update-
कृपया ध्यान दें कि jQuery
अब दो अनुरोध, एक हाथ मिलाना और एक वास्तविक सामग्री के साथ पूरा करने के लिए भेज देंगे। यह सामान्य HTTP व्यवहार है जिसे प्री-फ्लाइट कहा जाता है। यह निर्धारित करने के लिए कि सर्वर वास्तव में नियोजित अनुरोध के साथ संगत है या नहीं, पहला अनुरोध एक विकल्प शीर्षलेख होगा।
तो यह ध्यान रखें यदि आप अपने सर्वर बहुमुखी होना चाहता हूँ, एक QueryString केवल एक अनुरोध भेजता है का उपयोग कर। सही का उपयोग करना JSON कम से कम दो अनुरोध भेजता है, एक हैंडशेक के लिए।
यह मेरे सिर से गड़बड़ कर रहा था, इसलिए मैंने सोचा कि मैं आपको (संभावित पाठक) को पहले से ही बता दूंगा।
'डेटा टाइप' का डेटा कैसे भेजा जाता है इस पर कोई असर नहीं पड़ता है। यह केवल निर्दिष्ट करता है कि कॉल के द्वारा ** किस प्रकार का डेटा ** ** ** लौटाया गया है। यदि आप सर्वर को इंगित करना चाहते हैं कि आप किस प्रकार के डेटा को 'डेटा' प्रॉपर्टी में निर्दिष्ट कर रहे हैं, तो आपको 'contentType' प्रॉपर्टी 'कंटेंट टाइप टाइप करें:" एप्लिकेशन/जेसन "' – Nope
स्पष्टीकरण के लिए धन्यवाद। लेकिन उस स्थिति में, अगर प्रतिक्रिया में सामग्री-प्रकार शीर्षलेख प्रदान कर रहा है, तो मुझे प्रतिक्रिया प्रकार क्लाइंट-साइड निर्दिष्ट करने की आवश्यकता क्यों है? – Redsandro
आपको इसे निर्दिष्ट करने के लिए * नहीं है, डिफ़ॉल्ट रूप से jQuery प्रतिक्रिया के एमआईएम प्रकार के आधार पर एक बुद्धिमान अनुमान लगाने का प्रयास करेगा। हालांकि, इसे निर्दिष्ट करके आप jQuery को स्पष्ट रूप से बता रहे हैं कि आप सर्वर से किस प्रकार की अपेक्षा कर रहे हैं और jQuery उस प्रकार की ऑब्जेक्ट को प्रतिक्रिया को बदलने का प्रयास करेगा। इसे निर्दिष्ट नहीं करते हैं और jQuery को छोड़कर अनुमान लगाना परिणामस्वरूप jQuery को एक अप्रत्याशित प्रारूप में प्रतिक्रिया को परिवर्तित कर सकता है, भले ही आपने सर्वर से JSON भेजा हो। डेटा टाइप पर अधिक जानकारी के लिए प्रलेखन की जांच करें: http://api.jquery.com/jQuery.ajax/ – Nope