2015-08-24 8 views
5

मैं अपने बैकएंड को एक अनुरोध प्राप्त करना चाहता हूं, लेकिन मैं प्रतिक्रिया ऑब्जेक्ट भेजने से पहले कुछ उपयोगकर्ता प्रमाण-पत्र सत्यापित करना चाहता हूं।

$scope.getEverything = function(){ 
    $http.get('http://localhost:1234/things').success(function(data){ 
     $scope.things = data; 
    }); 
}; 

मैं निम्न सिंटैक्स के साथ एक ही कोड की कोशिश की है:

यहाँ मेरी कोड है

$http.method('path).then 
$http.method(config) 

और मैं सिर्फ यह पता लगाने नहीं कर सकता है कुछ डेटा में पारित करने के लिए कैसे। प्रिंट के साथ config वस्तु के रूप में डेटा बाहर: पैरामीटर का उपयोग करने की कोशिश कर रहा

प्राप्त http://localhost:1234/[object%20Object] 404 (नहीं मिला)

कंसोल पर।

AngularJS डॉक्स GET अनुरोधों के साथ डेटा भेजने के बारे में कोई शब्द नहीं कहता है। मैंने स्टैक के कुछ जवाब भी आजमाए हैं, लेकिन उनमें से अधिकतर पुराने हैं और बस काम नहीं करेंगे।

क्या मैं जीईटी अनुरोध के साथ डेटा भेज सकता हूं या यह मेरे आवेदन की सिर्फ एक डिज़ाइन त्रुटि है?

उत्तर

5

आपको जीईटी विधि के बजाय POST विधि का उपयोग करने की आवश्यकता होगी।

लेकिन किसी GET विधि के साथ यह करने के लिए:

AngularJS passing data to $http.get request से:

एक HTTP GET अनुरोध डाटा नहीं हो सकता सर्वर पर पोस्ट किया जाना है। हालांकि आप अनुरोध में एक क्वेरी स्ट्रिंग जोड़ सकते हैं।

angular.http इसके पैराम के लिए एक विकल्प प्रदान करता है।

$http({ 
    url: user.details_path, 
    method: "GET", 
    params: {user_id: user.id} 
}); 

और बजाय पोस्ट करने के लिए AngularJS का उपयोग कर:

$http.post('/someUrl', {msg:'hello word!'}). 
    then(function(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 
+0

कारण है कि आप एक कोणीय प्रश्न में $ .ajax' jQuery इंजेक्शन कर रहे हैं ': कोणीय पोस्ट विधि पर? कोणीय के पास यह स्वयं का AJAX एपीआई – charlietfl

+0

है, मैंने स्पष्टता – WMios

+0

दोनों के लिए शामिल किया है, मुझे नहीं लगता कि अगर AngularJS जगह पर है, तो jquery सीधे उपयोग किया जाना चाहिए, क्योंकि यह $ scope का उपयोग करने के लिए मजबूर होगा। $ लागू होता है और कोणीय की टेस्टेबिलिटी भी तोड़ देगा प्रोटैक्टर बंद होने के अनुरोध की प्रतीक्षा करना बंद कर देता है) –

1

var req = { 
method: 'GET', 
url: 'http://localhost:1234/things', 
data: { test: 'test' } 
} 

$http(req).then(function(){...}, function(){...}); 
2

$http.get अनुरोधों के लिए प्रयास करें config वस्तु की params संपत्ति का उपयोग

$http.get(url, {params:{ foo:'bar'}}).then(func.... 

$http docs

2

की प्रयोग खंड में तर्क तालिका देखें आप GET विधि के उपयोग आप $ http सेवा की विधि प्राप्त पर एक पैरामीटर विकल्प पारित कर सकते हैं पर कुछ डेटा पास करना चाहते हैं। यह urlencode पैरामीटर

$http.get(url, { 
    params: { 
    query: 'hello world' 
    } 
} 

या

$http({ 
    url: url, 
    method:'GET', 
    params: { 
    query:'Hello World' 
    } 
}) 

हो जाएगा लेकिन, http standars सर्वर से डेटा भेजने के लिए POST विधि परिभाषित करते हैं।जीईटी सिर्फ डेटा प्राप्त करने के लिए है।

$http({ 
    url: url, 
    method:'POST', 
    data: { 
    query: 'Hello World' 
    } 
}) 

जांच GET से official docs और POST

+0

धन्यवाद। लेकिन मैं क्वेरी पैरा का उपयोग नहीं करना चाहता हूं। :/ मैं पोस्ट के साथ जा रहा हूँ। धन्यवाद। – Rodmentou

+0

पोस्ट सर्वर पर डेटा भेजने का कठोर तरीका है, प्राप्त पैराम डेटा है जो अनुरोध के यूआरएल में संलग्न है। एक्सपी: यूआरएल? क्वेरी = helloworld और अन्यparam = 23। इसका उद्देश्य अनुरोध विकल्पों को परिष्कृत करना है। सर्वर को डेटा न भेजें। – chfumero

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