AJAX अनुरोध में सामग्री-प्रकार और डेटाटाइप क्या है?


179

POST अनुरोध में सामग्री-प्रकार और डेटाटाइप क्या है? मान लीजिए कि मेरे पास यह है:

$.ajax({
    type : "POST",
    url : /v1/user,
    datatype : "application/json",
    contentType: "text/plain",
    success : function() {

    },
    error : function(error) {

    },

है contentTypeकि हम क्या भेजें? इसलिए हम ऊपर दिए गए उदाहरण में जोसन भेजते हैं और जो हमें प्राप्त होता है वह सादा पाठ है? मैं वास्तव में नहीं समझता।

जवाबों:


304

contentTypeजिस प्रकार का डेटा आप भेज रहे हैं, application/json; charset=utf-8वह सामान्य है application/x-www-form-urlencoded; charset=UTF-8, जैसा कि डिफ़ॉल्ट है।

dataTypeक्या आप सर्वर से वापस उम्मीद कर रहे हैं: json, html, text, आदि jQuery इस का उपयोग यह पता लगाने की सफलता समारोह के पैरामीटर पॉप्युलेट करने के लिए कैसे होगा।

यदि आप कुछ पोस्ट कर रहे हैं जैसे:

{"name":"John Doe"}

और वापस उम्मीद है:

{"success":true}

तो आपके पास होना चाहिए:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "json",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        alert(result.success); // result is an object which is created from the returned JSON
    },
});

यदि आप निम्नलिखित की अपेक्षा कर रहे हैं:

<div>SUCCESS!!!</div>

तो आपको करना चाहिए:

var data = {"name":"John Doe"}
$.ajax({
    dataType : "html",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

एक और - यदि आप पोस्ट करना चाहते हैं:

name=John&age=34

फिर stringifyडेटा न करें, और करें:

var data = {"name":"John", "age": 34}
$.ajax({
    dataType : "html",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional
    data : data,
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

धन्यवाद वास्तव में :) यह "सफलता" क्या है: सच। यह बैकएंड में एक और json फ़ाइल है? यह सफलता कैसे बनी? वह वही है जो मैं वास्तव में जानना चाहता हूं
user2759697

2
यह सिर्फ एक साधारण वस्तु है - इसे बनाया गया है हालांकि सर्वर इसे बनाने का फैसला करता है। एक वेब सर्वर कुछ भी ऐसा महसूस कर सकता है जैसे कि - HTML, पाठ, या इस मामले में, एक JSON ऑब्जेक्ट जिसमें "सफलता" और नाम के साथ एकल गुण है। मैं अनुमान नहीं लगा सकता कि आपके एपीआई की रूपरेखा क्या है, लेकिन ASP.NET MVC में C # पर यह कुछ सरल होगा[HttpPost]public JsonResult user(Person postedPerson) { /* Save postedPerson to DB */ return Json(new { success = true }); }
जो एनोस

1
ध्यान दें कि आपको शब्द T में So Capital T के $.ajax({ dataType : "html", ... बजाय उपयोग करना चाहिए $.ajax({ datatype : "html",... । चेक jQuery एपीआई
वादिम लेकोवस्की

1
@ जैक मुझे लगता है कि वे कर सकते थे requestContentTypeऔर responseDataType, लेकिन वास्तव में, एक बार जब आप इसे दो बार कर चुके होते हैं, और आप एपीआई को समझते हैं, तो आप अतिरिक्त टाइपिंग को सार्थक बनाने के लिए पर्याप्त भ्रमित नहीं होंगे।
जो एनोस

1
@stom प्रश्न और मेरा उत्तर POST के लिए विशिष्ट थे, लेकिन अगर मुझे याद है, यदि आप GET पर डेटा के रूप में एक साधारण सरल वस्तु पास करते हैं, तो यह कुंजी-मूल्य वाले जोड़े के साथ क्वेरी स्ट्रिंग में बदल जाएगा। निश्चित नहीं है कि यदि आपके पास नेस्टेड मूल्यों के साथ एक जटिल वस्तु होती है, तो क्या होगा - लेकिन यह कोशिश करना मुश्किल नहीं होना चाहिए कि यदि आप उत्सुक हैं। मैं वास्तविक जीवन में ऐसा कभी नहीं करूंगा - बहुत मुश्किल से ही मैं कभी भी वैसे भी AJAX का उपयोग करता हूं।
जो एनोस

32

JQuery के दस्तावेज़ से - http://api.jquery.com/jQuery.ajax/

contentType सर्वर पर डेटा भेजते समय, इस सामग्री प्रकार का उपयोग करें।

dataType उस प्रकार का डेटा जो आप सर्वर से वापस पाने की उम्मीद कर रहे हैं। यदि कोई भी निर्दिष्ट नहीं है, तो jQuery ने MIME प्रकार की प्रतिक्रिया के आधार पर इसका अनुमान लगाने की कोशिश की

"टेक्स्ट": एक सादा पाठ स्ट्रिंग।

तो आप चाहते हैं कि कंटेंट टाइप होना चाहिए application/jsonऔर डेटा टाइप होना चाहिए text:

$.ajax({
    type : "POST",
    url : /v1/user,
    dataType : "text",
    contentType: "application/json",
    data : dataAttribute,
    success : function() {

    },
    error : function(error) {

    }
});

वास्तव में धन्यवाद और आवेदन / जसन में यह क्या है। क्या यह एक रास्ता है?
user2759697

1
@ user2759697 यह JSON के लिए परिभाषित MIME प्रकार का सिर्फ एक हिस्सा है। यह प्रश्न देखें - stackoverflow.com/questions/477816/…
रिचर्ड डाल्टन

4
यही कारण है कि मैं SO के बारे में पसंद करता हूं ... स्पष्ट के लिए दोहराएं ...> _ <
क्रिस्टोफ़

1

Http://api.jquery.com/jQuery.ajax/ देखें , वहाँ डेटाटाइप और सामग्री टाइप का उल्लेख है।

वे दोनों सर्वर के अनुरोध में उपयोग किए जाते हैं इसलिए सर्वर को पता है कि किस तरह का डेटा प्राप्त करना / भेजना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.