2013-03-04 12 views
10

मैं पारंपरिक jQuery $.ajax में dataType: 'json' निर्दिष्ट करना चाहता हूं। क्या यह Angular.js $http.post के साथ संभव है?

उत्तर

4

http://docs.angularjs.org/api/ng.$http

बदलने अनुरोध और प्रतिक्रियाएँ से दोनों अनुरोध और प्रतिक्रियाओं कार्यों को बदलने का उपयोग कर परिवर्तित किया जा सकता।

अनुरोध परिवर्तनों: डिफ़ॉल्ट रूप से, कोणीय इन परिवर्तनों लागू होता है

  • यदि अनुरोध config वस्तु का डेटा संपत्ति, एक वस्तु शामिल JSON प्रारूप में क्रमानुसार। रिस्पांस परिवर्तनों:

  • अगर XSRF उपसर्ग का पता चलते ही पट्टी (नीचे सुरक्षा संबंधी अनुभाग देखें)

  • अगर json प्रतिक्रिया का पता चला है, यह एक JSON पार्सर

का उपयोग कर deserialize इसलिए डेटा प्रकार सेट करने की कोई आवश्यकता नहीं है, यह स्वचालित रूप से किया जाता है

+5

समस्या यह है कि सर्वर डेटा टाइप के आधार पर HTML/XML/JSON के साथ प्रतिक्रिया करता है। यूआरएल हमेशा एक ही है। – Paul

+1

@ पॉल आप 'स्वीकार करें' शीर्षलेख के बारे में बात कर रहे हैं। – Musa

+1

मैं अनुरोध में 'सामग्री-प्रकार' के बारे में बात कर रहा हूं – Paul

19

हेडर सेट करने के लिए आप HTTP कॉन्फ़िगर ऑब्जेक्ट का उपयोग कर सकते हैं:

$http({ 
    method: 'POST', 
    url: 'somewhere.xyz', 
    headers: { 
     'Content-type': 'application/json' 
    } 
}) 
+0

अच्छा नहीं,' मैं पहले टिप्पणी को बढ़ाता हूं। यदि आप सर्वर पक्ष से प्रतिक्रिया के रूप में जेसन ऑब्जेक्ट भेज रहे हैं तो आपको हमेशा हेडर सेट अप करना होगा। सामान्य क्लासिक प्रिंट ({आईडी: 11}) आपको त्रुटि फेंक सकता है। सेटअप हेडर सामग्री-प्रकार जेसन के रूप में टाइप करें और ठीक काम करना चाहिए। Cya – daremachine

+1

ARGGGGH दोस्त, आपने अभी अपना दिन बचाया! मैं अपने बालों को यह सोचकर बाहर खींच रहा हूं कि क्यों मेरा नोड/एक्सप्रेस 4 पोस्ट डेटा का विश्लेषण नहीं करेगा ... पता चला है कि मुझे अपने कोणीय $ http अनुरोधों में हेडर सामग्री प्रकार को फोर्स करना था ..... भगवान बांध! – Spock

+0

उपरोक्त सेट करने की कोई आवश्यकता नहीं है क्योंकि यह डिफ़ॉल्ट है। देखें: https://docs.angularjs.org/api/ng/service/$http#setting-http-headers। तथ्य यह है कि इससे आपकी मदद मिली, शायद यह इंगित करता है कि आपका कोड किसी अन्य स्थान पर डिफ़ॉल्ट हेडर सेट कर रहा था। –

3

मैं एक ही समस्या थी, responseType:'json' समस्या हल हो जाती

आप responseType उपयोग कर सकते हैं: डेटाप्रकार के बजाय 'json': 'json'

var promise = $http({ 
      method: 'POST', 
      url: 'somewhere.xyz', 
      responseType:'json' 

     }); 

आगे के संदर्भ के लिए https://docs.angularjs.org/api/ng/service/$http#methods_jsonp

+0

https://docs.angularjs.org/api/ng/service/$http#usage reponseType में आपको https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest- प्रतिक्रिया टाइप जो इसे चेतावनी के साथ सर्वर सामग्री-प्रकार के ओवरराइड की तरह ध्वनि बनाता है: "प्रतिक्रिया सेट करते समय किसी विशेष मान पर टाइप करें, लेखक को यह सुनिश्चित करना चाहिए कि सर्वर वास्तव में उस प्रारूप के अनुकूल प्रतिक्रिया भेज रहा है।यदि सर्वर उस डेटा को वापस लौटाता है जो प्रतिक्रिया के अनुकूल नहीं है टाइप किया गया था, तो प्रतिक्रिया का मूल्य शून्य होगा। " –

संबंधित मुद्दे