2012-07-24 11 views
5

में jQuery अजाक्स कॉल को फिर से लिखें contentType और setRequestHeader के साथ इस jQuery AJAX POST के लिए एक कोणीय जेएस समकक्ष कॉल है?एंगुलरजेएस

$.ajax({ 
    url: "http://localhost/songs", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"); 
    }, 
    success: function(data){ 
     console.log(data); 
    } 
}); 

उत्तर

11

आप शायद $http या $resource सेवा का उपयोग करना चाहते हैं। $ Http दस्तावेज़ में आप पर अनुभाग देख सकते हैं SOAPAction सेट करने के लिए HTTP शीर्षलेख सेट करना और डिफ़ॉल्ट सामग्री प्रकार पहले से ही जेसन पर सेट हो जाएगा (हालांकि आप इसे भी ओवरराइड करने में सक्षम होना चाहिए)।

यह आपको शुरू हो सकता है और मुझे बेहतर तरीके से अन्य उत्तरों देखने में दिलचस्पी होगी क्योंकि यह सीमित लगता है।

var module = angular.module('myApp', []); 

module.config(function ($httpProvider) { 
    $httpProvider.defaults.headers.post['SOAPAction'] = 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems'; 
}); 

function myController($http) { 
    var data = { 'value1': 1, 'value2': 2 }; 

    $http.post('/songs', data).success(function (data) { 
     console.log(data); 
    }); 
} 

this thread के आधार पर मैं तुम्हें प्रत्येक कॉल के लिए अलग तरह से हेडर सेट कर सकते हैं पर विश्वास नहीं है लेकिन ऐसा लगता है एक change $ संसाधन सेवा है कि यह अनुमति देगा के लिए आ रहा हो सकता है की तरह।

अद्यतन: दस्तावेज में यह चूक अवश्य, लेकिन आप निश्चित रूप से इस तरह this post प्रति $http का उपयोग कर प्रति कॉल विभिन्न कार्यों सेट कर सकते हैं:

var data = { 'value1': 1, 'value2': 2 }; 

$http.post('/songs', data, {headers: {'SOAPActions': 'http://schemas.microsoft.com/sharepoint/soap/UpdateListItems'}}) 
    .success(function (data) { 
     console.log(data); 
    });