दिलचस्प पोस्ट
जावास्क्रिप्ट क्लिक ईवेंट हैंडलर – मैं क्लिक किए गए आइटम का संदर्भ कैसे प्राप्त करूं? जावा में गुमनाम समारोह की घोषणा करने से पहले डॉलर का संकेत? प्रिंटिंग पृष्ठ से यूआरएल कैसे निकालें? मुद्रा पाठ को दशमलव प्रकार में पार्स करने में समस्या मानचित्र में एक से अधिक स्ट्रिंग कैसे संग्रहित करें? आप जावा में दिए गए वर्ग के सभी उप-वर्गों को कैसे ढूंढ सकते हैं? कम.जेएस क्रोम में काम नहीं कर रहा है क्या iPhone ऐप्स स्टार्ट-अप पर शुरू हो सकते हैं? SQLite UPSERT / अद्यतन या INSERT एक पृष्ठभूमि कार्य या सेवा से वर्तमान अग्रभूमि अनुप्रयोग का निर्धारण करना SqlDateTime.MinValue! = दिनांकटाइम.मिनवैल्यू, क्यों? जगह में फ़ाइल को संशोधित करें (उसी गंतव्य) Gulp.js और एक ग्लोबिंग पैटर्न का उपयोग कर पायथन में मनमाने ढंग से नेस्टेड सूचियों को समतल करने का सबसे तेज़ तरीका क्या है? एचक्यूएल या जावा कायमता प्रश्न भाषा में इन खंड BaseAdapter में GetFilter () का उपयोग करके ListView फ़िल्टर कैसे करें

jQuery के एजेक्स, क्वेरी के बजाय JSON भेजने के लिए कैसे करें

क्या कोई आसान तरीका बता सकता है कि कैसे jQuery को एक querystring स्थान पर वास्तविक json भेजना है?

 $.ajax({ url : url, dataType : 'json', // I was pretty sure this would do the trick data : data, type : 'POST', complete : callback // etc }); 

यह वास्तव में आपके ध्यान से तैयार किए गए json को एक querystring कनवर्ट करेगा। कष्टप्रद चीजों में से एक यह है कि किसी भी array: [] आपके ऑब्जेक्ट में array: [] में परिवर्तित हो जाएगा array[]: [] , संभवतः querysting की सीमाओं के कारण।

-अद्यतन करें-

नीचे दिए गए उत्तर में उचित विधि पाई जा सकती है:

 $.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 '*' } 

-अद्यतन करें-

कृपया ध्यान दें कि jQuery अब दो अनुरोध भेजेगा, एक हाथ से बना और एक वास्तविक सामग्री के साथ। यह पूर्व-उड़ान नामक सामान्य HTTP व्यवहार है पहला अनुरोध एक ऑप्शन हेडर होगा यह निर्धारित करने के लिए कि क्या सर्वर वास्तव में नियोजित अनुरोध से संगत है या नहीं।

इसलिए ध्यान रखें कि यदि आप चाहते हैं कि आपका सर्वर बहुमुखी हो, तो क्वेरी स्ट्रिंग का उपयोग केवल एक अनुरोध भेजता है। असली JSON का उपयोग कम से कम दो अनुरोध भेजता है, एक हैंडशेक के लिए।

यह मेरे सिर के साथ गड़बड़ कर रहा था, इसलिए मैंने सोचा कि मैं आपको (संभावित पाठक) अग्रिम में बताऊंगा।

Solutions Collecting From Web of "jQuery के एजेक्स, क्वेरी के बजाय JSON भेजने के लिए कैसे करें"

आपको JSON.stringify का उपयोग करने के लिए अपने ऑब्जेक्ट को पहले JSON पर क्रमबद्ध करने की आवश्यकता है, और उसके बाद सामग्री-प्रकार निर्दिष्ट करें ताकि आपका सर्वर JSON को समझ सके। यह काम कर जाना चाहिए:

 $.ajax({ url: url, type: "POST", data: JSON.stringify(data), contentType: "application/json", complete: callback }); 

ध्यान दें कि JSON ऑब्जेक्ट ने ब्राउज़र में उपलब्ध है जो जावास्क्रिप्ट 1.7 / ECMAScript 5 या बाद के संस्करण का समर्थन करते हैं। यदि आपको लीगेसी समर्थन की आवश्यकता है तो आप json2 का उपयोग कर सकते हैं

नहीं, dataType विकल्प प्राप्त डेटा को पार्स करने के लिए है।

JSON पोस्ट करने के लिए, आपको इसे JSON.stringify माध्यम से JSON.stringify करने की आवश्यकता होगी और processData विकल्प को false सेट करना processData

 $.ajax({ url: url, type: "POST", data: JSON.stringify(data), processData: false, contentType: "application/json; charset=UTF-8", complete: callback }); 

ध्यान दें कि सभी ब्राउज़र्स JSON ऑब्जेक्ट का समर्थन नहीं करते हैं, और यद्यपि jQuery में .parseJSON , इसमें कोई .parseJSON शामिल नहीं है; आपको एक और पॉलीफिल पुस्तकालय की आवश्यकता होगी

हालांकि मुझे पता है कि एएसपी.नेट एमवीसी जैसे कई आर्किटेक्चर JSON.stringify को संभाल करने के लिए अंतर्निर्मित कार्यक्षमता है, सामग्री के रूप में मेरी स्थिति थोड़ी अलग है, इसलिए शायद यह भविष्य में किसी को मदद कर सके। मुझे पता है कि यह मुझे घंटे बचाएगा!

चूंकि मेरे एचआईवी अनुरोधों को एक अलग उपडोमेन पर आईबीएम (एएस 400 पर्यावरण) से एक सीजीआई एपीआई द्वारा संभाला जा रहा है, इसलिए इन अनुरोधों को पार किया गया है, इसलिए जेएसओएनपी मैं वास्तव में जावास्क्रिप्ट ऑब्जेक्ट (एस) के जरिए अपना एजेक्स भेजें यहां मेरे अजाक्स पोस्ट का एक उदाहरण है:

  var data = {USER : localProfile, INSTANCE : "HTHACKNEY", PAGE : $('select[name="PAGE"]').val(), TITLE : $("input[name='TITLE']").val(), HTML : html, STARTDATE : $("input[name='STARTDATE']").val(), ENDDATE : $("input[name='ENDDATE']").val(), ARCHIVE : $("input[name='ARCHIVE']").val(), ACTIVE : $("input[name='ACTIVE']").val(), URGENT : $("input[name='URGENT']").val(), AUTHLST : authStr}; //console.log(data); $.ajax({ type: "POST", url: "http://www.domian.com/webservicepgm?callback=?", data: data, dataType:'jsonp' }). done(function(data){ //handle data.WHATEVER }); 

अगर आप इसे वापस asp.net पर भेज रहे हैं और request.form [] में डेटा की जरूरत है तो आपको सामग्री प्रकार को "application / x-www-form-urlencoded; charset = utf-8" सेट करने की आवश्यकता होगी

मूल पोस्ट यहाँ

दूसरे, डेटाटाइप से छुटकारा पाएं, अगर आपके रिटर्न की उम्मीद नहीं है, तो पोस्ट करने में विफल होने से लगभग 4 मिनट इंतजार होगा। यहां देखें