यहाँ एक, उम्मीद है कि, सटीक जवाब है निर्दिष्ट (ओं) के लिए। ध्यान दें कि यह एक स्ट्रिंग नहीं है, लेकिन एक ऑब्जेक्ट स्वीकृत प्रतिक्रियाओं के एमआईएमई प्रकार का मानचित्रण कर रहा है। { text: "text/plain", html: "text/html" }
की तरह। अनुरोध द्वारा अपेक्षित प्रारूप में प्रतिक्रिया प्रदान करने के लिए Accept
शीर्षलेख का उपयोग सर्वर द्वारा किया जा सकता है, या अगर यह अनुरोध द्वारा अपेक्षित स्वरूपों में से किसी एक में प्रतिक्रिया प्रदान नहीं कर पाता है तो विफल हो सकता है। headers: {Accept : "text/json"}
:
वास्तव में एक महत्वपूर्ण बात यह है बजाय मैं headers
विकल्प का उपयोग हैडर बदलने में कामयाब रहे, कि, कम से कम jQuery 1.11.3 (मैं कहाँ का परीक्षण) में, इस विकल्प काम नहीं कर किया जा रहा है है।
dataType
विकल्प आपको पूर्व प्रक्रिया प्रतिक्रिया
जाने आप एक dataType
को परिभाषित करते हैं, तो अनुरोध की प्रतिक्रिया jQuery द्वारा उत्तराधिकारी हैंडलर के लिए उपलब्ध होने से पहले पूर्व कार्रवाई की जाएगी। उदाहरण के लिए:
तो json
निर्दिष्ट किया जाता है, प्रतिक्रिया पारित किया जा रहा से पहले jQuery.parseJSON
उपयोग कर रहा है पार्स, एक वस्तु के रूप में, सफलता हैंडलर के लिए।
यदि script
निर्दिष्ट है, $.ajax()
एक स्ट्रिंग के रूप में सफलता हैंडलर पर जाने से पहले सर्वर से प्राप्त जावास्क्रिप्ट को निष्पादित करेगा।
"उदाहरण प्रकार" अनुभाग में अधिक उदाहरण here।
यदि dataType
सेट नहीं है, तो Content-Type
प्रतिक्रिया का निर्धारण करेगा कि प्रतिक्रिया के लिए पूर्व-प्रसंस्करण क्या किया जाना चाहिए। ध्यान रखें कि dataType
बदलना Accept
हेडर भी बदल देगा। आमतौर पर Accept
शीर्षलेख को अपने आप में बदलने की आवश्यकता नहीं है।
उदाहरण
अनुरोध।php
<?php
if(strpos($_SERVER["HTTP_ACCEPT"],"text/javascript") === false)
exit("I only provide text/javascript responses");
echo "alert('This is my response!')";
index.html
<button id="send">Send</button>
<div id="response"></div>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function(){
$("#send").click(function(){
$.ajax({
method: "GET",
url: "request.php",
dataType: "script" // Change this to "text" and you will see the difference
}).done(function(data) {
$("#response").text(data);
});
});
});
</script>
dataType
"script"
पर सेट होने पर Accept
शीर्ष लेख शामिल "text/javascript"
तो request.php
पर परीक्षा उत्तीर्ण करेंगे। यह "alert('This is my response!')"
लौटाएगा और dataType
पर सेट किया गया है "script"
jQuery इसे जावास्क्रिप्ट के रूप में निष्पादित करने का प्रयास करेगा और फिर सफलता हैंडलर को सादे पाठ के रूप में पास करेगा।
आप को बदलते हैं dataType
"text"
को Accept
हेडर को शामिल नहीं किये जाएंगे "text/javascript"
तो request.php
पर परीक्षण असफल हो जायेगी। यह "I only provide text/javascript responses"
लौटाएगा और dataType
को "text"
पर सेट किया गया है, jQuery इसे सफलता हैंडलर को सादा पाठ के रूप में पास कर देगा।
"आप भेजते हैं" बनाम "आप उम्मीद कर रहे हैं" – SerCrAsH
भेजने के लिए सामग्री है टाइप करें, मेरा प्रश्न डेटा के बारे में है टाइप करें और स्वीकार करता है कि उनमें से दोनों स्पष्ट रूप से सर्वर से अपेक्षा कर रहे हैं। –
ऐसा लगता है कि सर्वर को यह बताने का तरीका है कि आप किस प्रकार का उत्तर चाहते हैं, यदि आपके पास ऑफ़र करने के कई विकल्प हैं, जबकि 'डेटा टाइप' वह है जिसे आप प्रतिक्रिया के रूप में उम्मीद कर रहे हैं, इसलिए प्रतिक्रिया मूल रूप से है पार्स। –