2014-04-11 7 views
8

मेरे पास आरईएसटी के लिए एपीआई के साथ जावा ऐप है। और मैं इसके लिए फ्रंट एंड बना देता हूं। अब मैं प्राधिकरण के साथ काम कर रहा हूँ।AngularJS में पोस्ट के बाद प्रतिक्रिया कैसे प्राप्त करें?

जब मैं पोस्ट अनुरोध एप्लिकेशन मुझे इस तरह JSON संदेश लौटाता हो: तो लॉगिन और पास सही है

{ 
    "result": { 
     "token": "shgvojhhsifav37o5a3sebc3if" 
    } 
} 

और अगर वे सही नहीं हैं:

{ 
    "error": { 
     "code": 10, 
     "message": "Incorrect login or password" 
    } 
} 

मैं प्रतिक्रिया देख सकते हैं ब्राउज़र में, लेकिन इसे जावास्क्रिप्ट कोड में उपयोग करने के लिए नहीं ले जा सकता है।

और मैं इसे कैसे प्राप्त कर सकता हूं और अगली कार्रवाइयों की जांच कर सकता हूं।

मेरा JavaScript:

controllers.controller('userAuthCtrl', ['$scope','$http', 
    function($scope, $http){ 
     $http({ 
      method: 'POST', 
      url: '/rest/api/auth/login', 
      data: '?login=test&password=passwo3rd', 
      headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} 
     }). 
      success(function(data, status, header, config) { 
       console.log(header()); 
       console.log(config); 

       $scope.dataU = data; 
       $scope.statusU = status; 
      }).error(function(data, status, header, config){ 
       console.log(header()); 
       console.log(config); 
      }) 

    } 
]); 

मेरे परीक्षण HTML अब आसान है।

<div class="testCont" ng-controller="userAuthCtrl"> 

</div> 

उत्तर

7

$ http (documentation) दो अतिरिक्त विधियों के साथ भी एक वादा देता है। success जो आप सही तरीके से संभालने वाले हैं और error जिन्हें आपने परिभाषित नहीं किया है लेकिन आप आसानी से success फ़ंक्शन के बाद आसानी से श्रृंखला बना सकते हैं।

$http({[options]}) 
    .success(function(data, status, headers, config){}) 
    .error(function(data, status, headers, config){}); 

अपने वेब प्रतिक्रिया अभी भी सफलता या विफलता के लिए 200 की स्थिति लौटने रहा है तो आप यह thusly अपनी सफलता हैंडलर में संभाल कर सकते हैं:

$http({}) 
    .success(function(data, status, headers, config){ 
     /*called for result & error because 200 status*/ 
     if (data.result){ 
      //handle success here 
     } else if (data.error { 
      //handle error here 
    }) 
    .error(function(data, status, headers, config){ 
     /*handle non 200 statuses*/ 
    }); 

टिप्पणियों के आधार पर, आप भी बदलना होगा इस:

data: '?login=test&password=passwo3rd 

रहे हैं:

data: {login: 'test', password: 'passwo3rd'} 

ऐसा इसलिए है क्योंकि यह क्वेरी स्ट्रिंग नहीं है बल्कि JSON प्रारूप में अनुरोध निकाय का हिस्सा है।

+0

मुझे हमेशा लॉगिन/पास से 200 स्थिति स्वतंत्र होती है। अगर मैं आरईएसटी कंसोल का उपयोग करता हूं और POST अनुरोध भेजता हूं, तो मुझे सही प्रतिक्रिया मिली। – elpofigisto

+0

यदि ऐसा है, तो आपके द्वारा प्रदान किए जा रहे दूसरे डेटा मॉडल के आधार पर, मैंने जो दूसरा कोड ब्लॉक शामिल किया है, उसे देखें, जिसमें आप शामिल किए गए JSON के आधार पर फ़ील्ड को 'परिणाम' या 'त्रुटि' शामिल करते हैं, इस पर आधारित तर्क निर्धारित कर सकते हैं – Brocco

+0

से ऊपर मैं अपना कोड अपडेट कर दूंगा। आतंक() – elpofigisto

2

यह आपके लिए उपयोगी हो सकता है।

$http.post("Your URL").success(function(data) { 
     // success 
     here 


    }).error(function(error) { 
     // error 
     console.log(JSON.stringify("Failed to get t&c: " + error)); 
    });` 
संबंधित मुद्दे