जवाबों:
contentTypeकिसी विशेष प्रारूप को निर्दिष्ट करते हुए सर्वर पर HTTP हेडर भेजा जाता है। dataTypeक्या आप jQuery को बता रहे हैं कि किस तरह की प्रतिक्रिया की उम्मीद है। $.ajax()प्रलेखन इन के संपूर्ण वर्णन भी है।
आपके विशेष मामले में, पहली प्रतिक्रिया के लिए पूछ रहा है UTF-8, दूसरा परवाह नहीं करता है। पहला भी प्रतिक्रिया को जावास्क्रिप्ट ऑब्जेक्ट के रूप में मान रहा है, दूसरा इसे एक स्ट्रिंग के रूप में मान रहा है।
तो पहला होगा:
success: function(data) {
// get data, e.g. data.title;
}
द्वितीय:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""?
(पीएस: निक क्रेवर द्वारा दिया गया उत्तर गलत है)
contentType अनुरोध के भाग के रूप में सर्वर को भेजे जा रहे डेटा के प्रारूप को निर्दिष्ट करता है (इसे प्रतिक्रिया के हिस्से के रूप में भी भेजा जा सकता है, उस पर बाद में और अधिक)।
dataType क्लाइंट (ब्राउज़र) द्वारा प्राप्त किए जाने वाले डेटा के अपेक्षित प्रारूप को निर्दिष्ट करता है।
दोनों विनिमेय नहीं हैं।
contentTypeसर्वर को भेजा जाने वाला हेडर है, जो डेटा के प्रारूप को निर्दिष्ट करता है (यानी संदेश की सामग्री) सर्वर पर होने के नाते। इसका उपयोग POST और PUT अनुरोधों के साथ किया जाता है। आमतौर पर जब आप POST का अनुरोध भेजते हैं, तो संदेश निकाय में पैरामीटर जैसे पास होते हैं:==============================
नमूना अनुरोध:
POST /search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
<<other header>>
name=sam&age=35
==============================
"नाम = सम और आयु = 35" के ऊपर की अंतिम पंक्ति संदेश निकाय है और सामग्री टाइप इसे अनुप्रयोग / x-www-form-urlencoded के रूप में निर्दिष्ट करता है क्योंकि हम संदेश शरीर में प्रपत्र पैरामीटर पारित कर रहे हैं। हालाँकि हम केवल पैरामीटर भेजने तक सीमित नहीं हैं, हम json, xml भेज सकते हैं, ... इस तरह (विभिन्न प्रकार के डेटा भेजना विशेष रूप से Restful वेब सेवाओं के साथ उपयोगी है):
==============================
नमूना अनुरोध:
POST /orders HTTP/1.1
Content-Type: application/xml
<<other header>>
<order>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
तो इस बार ContentType है: Application / xml, कारण वही है जो हम भेज रहे हैं। उपरोक्त उदाहरणों ने नमूना अनुरोध दिखाया, इसी तरह सर्वर से प्रतिक्रिया भेजने पर सामग्री-प्रकार के हेडर को भी निर्दिष्ट किया जा सकता है जो यह बताता है कि सर्वर इस प्रकार है:
==============================
नमूना प्रतिक्रिया:
HTTP/1.1 201 Created
Content-Type: application/xml
<<other headers>>
<order id="233">
<link rel="self" href="http://example.com/orders/133"/>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
dataTypeउम्मीद करने के लिए प्रतिक्रिया का प्रारूप निर्दिष्ट करता है। इसका शीर्षक Accept से संबंधित है। JQuery, सामग्री-प्रकार की प्रतिक्रिया के आधार पर इसका अनुमान लगाने की कोशिश करेगा।==============================
नमूना अनुरोध:
GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<<other headers>>
==============================
उपरोक्त अनुरोध सर्वर से XML की अपेक्षा कर रहा है।
आपके प्रश्न के बारे में,
contentType: "application/json; charset=utf-8",
dataType: "json",
यहां आप UTF8 कैरेक्टर सेट का उपयोग करके json डेटा भेज रहे हैं, और आप सर्वर से json डेटा की अपेक्षा करते हैं। डेटा टाइप के लिए JQuery डॉक्स के अनुसार,
Json प्रकार एक डेटा ऑब्जेक्ट को जावास्क्रिप्ट ऑब्जेक्ट के रूप में पार्स करता है और परिणामी डेटा के रूप में निर्मित ऑब्जेक्ट को वापस करता है।
तो जो आपको सफलता हैंडलर में मिलती है वह उचित जावास्क्रिप्ट ऑब्जेक्ट है (JQuery आपके लिए json ऑब्जेक्ट को कनवर्ट करता है)
जहाँ तक
contentType: "application/json",
dataType: "text",
यहाँ आप JSON डेटा भेज रहे हैं, क्योंकि आपने JQuery डॉक्स के अनुसार एन्कोडिंग का उल्लेख नहीं किया है,
यदि कोई चारसेट निर्दिष्ट नहीं है, तो सर्वर के डिफ़ॉल्ट चारसेट का उपयोग करके डेटा सर्वर पर प्रेषित किया जाएगा; आपको सर्वर पर यह उचित रूप से डिकोड करना होगा।
और चूंकि डेटाटाइप को टेक्स्ट के रूप में निर्दिष्ट किया जाता है, आपको सफलता हैंडलर में जो मिलता है वह डेटा टेक्स्ट के लिए डॉक्स के अनुसार सादा टेक्स्ट है,
टेक्स्ट और xml प्रकार बिना किसी प्रोसेसिंग के डेटा लौटाते हैं। डेटा को केवल सफलता हैंडलर को दिया जाता है
डॉक्स के अनुसार :
"json": JSON के रूप में प्रतिक्रिया का मूल्यांकन करता है और एक जावास्क्रिप्ट ऑब्जेक्ट देता है। JQuery 1.4 में JSON डेटा को सख्त तरीके से पार्स किया गया है; किसी भी विकृत JSON को अस्वीकार कर दिया जाता है और एक पार्स त्रुटि डाली जाती है। (उचित JSON फॉर्मेटिंग के बारे में अधिक जानकारी के लिए json.org देखें।)"text": एक सादा पाठ स्ट्रिंग।जब आप एक साथ दो एपीआई कॉल करते हैं तो jQuery Ajax लोडर अच्छी तरह से काम नहीं कर रहा है। इस समस्या को हल करने के लिए आपको isAsyncअजाक्स सेटिंग में संपत्ति का उपयोग करके एक-एक करके एपीआई कॉल करना होगा। आपको यह भी सुनिश्चित करने की आवश्यकता है कि सेटिंग में कोई त्रुटि नहीं होनी चाहिए। अन्यथा, लोडर काम नहीं करेगा। उदाहरण के लिए अपरिभाषित सामग्री-प्रकार, POST / PUT / DELETE / GET कॉल के लिए डेटा-प्रकार।