JQuery के अजाक्स फ़ंक्शन में contentType और dataType के बीच अंतर


123

मेरे पास निम्न Jquery कॉलबैक फ़ंक्शन है और मुझे इसके बारे में एक संदेह है (मुझे बहुत अच्छी तरह से Jquery नहीं पता है):

$("form.readXmlForm").submit(function() {
    // Riferimento all'elemento form che ha scatenato il submit 
    var form = $(this);
    // Variabile che contiene il riferimento al bottone clickato 
    var button = form.children(":first");

    $.ajax({        // Viene eseguita la chiamata AJAX 
        type: "POST", // Tipo di richiesta: POST 
        // URL verso quale viene inviata la richiesta
        url: form.attr("action"),    
        // Dati XML inviati: 
        data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>", 
        // Tipo di media type accettabile dalla response: 
        contentType: "application/xml", 
        dataType: "text", 

        success: function(text) { 
            MvcUtil.showSuccessResponse(text, button); 
        }, 

        error: function(xhr) { 
            MvcUtil.showErrorResponse(xhr.responseText, button); 
        }
    });

जैसा कि आप इस फ़ंक्शन को बस इस अनुरोध के लिए पैरामीटर सेट करने वाले बैकएंड के लिए एक AJAX अनुरोध को निष्पादित कर सकते हैं।

मैंने निर्धारित किया है कि मैं URL के लिए अनुरोध भेज रहा हूं, यह अनुरोध एक POST अनुरोध है और जो डेटा मैं भेज रहा हूं वह निम्नलिखित स्ट्रिंग हैं:

"Barapple"

मुझे यह समझाया गया के बीच मतभेद है कि क्या कुछ कठिनाइयों है contentType और डेटाप्रकार

मुझे लगता है कि contentType HTTP रिस्पांस में स्वीकार्य डेटा के प्रकार को निर्दिष्ट करता है, क्या यह सही है?

और डेटा टाइप? क्या कहते हो? HTTP अनुरोध में मैं किस प्रकार का डेटा भेज रहा हूं?

इस मामले में "पाठ" है, क्योंकि मैं एक पाठ स्ट्रिंग भेज रहा हूं जो कि एक्सएमएल कोड के समान है?


क्या सामग्री-प्रकार और डेटा-प्रकार का उद्देश्य jQuery के उपयोग और REST API उपयोग के बीच भिन्न है?
sofs1

जवाबों:


172

से प्रलेखन :

सामग्रीटाइप (डिफ़ॉल्ट: 'एप्लिकेशन / x-www-form-urlencoded; चारसेट = UTF-8')

प्रकार: स्ट्रिंग

सर्वर को डेटा भेजते समय, इस सामग्री प्रकार का उपयोग करें। डिफ़ॉल्ट "एप्लिकेशन / x-www-form-urlencoded; चारसेट = UTF-8" है, जो अधिकांश मामलों के लिए ठीक है। यदि आप स्पष्ट रूप से $ .ajax () के लिए एक सामग्री-प्रकार में पास करते हैं, तो यह हमेशा सर्वर को भेजा जाएगा (भले ही कोई डेटा नहीं भेजा गया हो)। यदि कोई चारसेट निर्दिष्ट नहीं है, तो सर्वर के डिफ़ॉल्ट चारसेट का उपयोग करके डेटा सर्वर पर प्रेषित किया जाएगा; आपको सर्वर साइड पर इसे उचित रूप से डिकोड करना होगा।

तथा:

डेटाटाइप (डिफ़ॉल्ट: इंटेलिजेंट गेस (xml, json, स्क्रिप्ट या html))

प्रकार: स्ट्रिंग

डेटा का प्रकार जो आप सर्वर से वापस आने की उम्मीद कर रहे हैं। यदि कोई भी निर्दिष्ट नहीं किया गया है, तो jQuery MIME प्रकार की प्रतिक्रिया के आधार पर इसका अनुमान लगाने की कोशिश करेगा (एक XML MIME प्रकार XML का उत्पादन करेगा, 1.4 में JSON एक जावास्क्रिप्ट ऑब्जेक्ट उत्पन्न करेगा, 1.4 स्क्रिप्ट में स्क्रिप्ट निष्पादित करेगा, और कुछ भी होगा एक स्ट्रिंग के रूप में लौटा)।

वे अनिवार्य रूप से इसके विपरीत हैं जो आपने सोचा था कि वे थे।


3
contentTypeहेडर को भी प्रभावित करता है, dataTypeनहीं
Viney

83

यहाँ छवि विवरण दर्ज करें

अंग्रेजी में:

  • ContentType: सर्वर पर डेटा भेजते समय, इस सामग्री प्रकार का उपयोग करें। डिफ़ॉल्ट है application/x-www-form-urlencoded; charset=UTF-8, जो ज्यादातर मामलों के लिए ठीक है।
  • Accepts: अनुरोध हेडर में भेजी गई सामग्री प्रकार जो सर्वर को बताती है कि बदले में वह किस तरह की प्रतिक्रिया स्वीकार करेगी। पर निर्भर करता है DataType
  • DataType: डेटा का प्रकार जो आप सर्वर से वापस आने की उम्मीद कर रहे हैं। यदि कोई भी निर्दिष्ट नहीं है, तो jQuery MIME प्रकार की प्रतिक्रिया के आधार पर इसका अनुमान लगाने की कोशिश करेगा। हो सकता है text, xml, html, script, json, jsonp

9
अच्छा दृश्य। धन्यवाद।
डॉ। एमएएफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.