TypeError: अपरिभाषित की संपत्ति 'तब' नहीं पढ़ सकता है


100
loginService.islogged() 

उपरोक्त फ़ंक्शन "स्ट्रिंग" की तरह एक स्ट्रिंग लौटाता है। हालाँकि, जब मैं चलाने की कोशिश करता हूँ तो उस पर कार्य करता है, यह त्रुटि वापस करेगा

TypeError: Cannot read property 'then' of undefined

और कर्सर को उसके ठीक connectedपहले और बाद में इंगित किया गया है .then

नीचे पूर्ण कार्य है:

var connected=loginService.islogged();
alert(connected);
connected.then(function(msg){
    alert("connected value is "+connected);
    alert("msg.data value is "+msg.data);
    if(!msg.data.account_session || loginService.islogged()=="failed")       
        $location.path('/login');
});

अपडेट करें

यहाँ islogged()समारोह है

islogged:function(){
    var cUid=sessionService.get('uid');
    alert("in loginServce, cuid is "+cUid);
    var $checkSessionServer=$http.post('data/check_session.php?cUid='+cUid);
    $checkSessionServer.then(function(){
        alert("session check returned!");
        console.log("checkSessionServer is "+$checkSessionServer);
        return $checkSessionServer;
    });
}

मुझे विश्वास है कि $checkSessionServer"असफल" स्ट्रिंग में परिणाम होगा। और कुछ नहीं।


4
आपके पास यहां नहीं है promise
डैनियल ए। व्हाइट

क्या करने के लिए बुलाया msgजाना चाहिए - कि एक वादा वापस करना चाहिए।
डैनियल ए। व्हाइट

यदि त्रुटि संबंधित है undefined, तो islogged()वास्तव में returnकोई मूल्य नहीं है। islogged()संभावना की परिभाषा आपके मुद्दों का स्रोत होगी।
जोनाथन लोनोस्की

यह संभवत: यह है कि आपका भरा हुआ तरीका किसी मामले में मान नहीं लौटाता है। उसके बाद मैं देखता हूं कि आप async विधि के रूप में islogged का उपयोग नहीं कर रहे हैं, इसलिए यह संभवतः वादा वापस नहीं कर रहा है।
लेडी कौरिन

@ जोनाथन लोनोव्स्की I ने केवल थपथपाने वाले कार्य को पोस्ट किया। आशा है कि अधिक अंतर्दृष्टि लाओ।
इजेवेई

जवाबों:


133

आपको कॉलिंग फ़ंक्शन पर अपना वादा वापस करने की आवश्यकता है।

islogged:function(){
    var cUid=sessionService.get('uid');
    alert("in loginServce, cuid is "+cUid);
    var $checkSessionServer=$http.post('data/check_session.php?cUid='+cUid);
    $checkSessionServer.then(function(){
        alert("session check returned!");
        console.log("checkSessionServer is "+$checkSessionServer);
    });
    return $checkSessionServer; // <-- return your promise to the calling function
}

4
यह वास्तव में यही कारण था कि मेरा कारखाना वादा वापस नहीं कर रहा था। मैं करना भूल गया return $http.post। जैसे ही मैंने उपसर्ग जोड़ा returnकरने के लिए $http, इसे सही ढंग से काम करना शुरू किया।
डिवनेर

3
@ ड्वेनर शुक्रिया, मैं भी पास होना भूल गया था return
ईएसआर

2

TypeError: AngularJS का उपयोग करते हुए Django सर्विस को कॉल करते समय अपरिभाषित की संपत्ति को 'तब पढ़ नहीं सकते'।

यदि आप पायथन सेवा को कॉल कर रहे हैं, तो कोड नीचे की तरह दिखाई देगा:

this.updateTalentSupplier=function(supplierObj){
  var promise = $http({
    method: 'POST',
      url: bbConfig.BWS+'updateTalentSupplier/',
      data:supplierObj,
      withCredentials: false,
      contentType:'application/json',
      dataType:'json'
    });
    return promise; //Promise is returned 
}

हम MongoDB को डेटाबेस के रूप में उपयोग कर रहे हैं (मुझे पता है कि यह कोई फर्क नहीं पड़ता। लेकिन अगर कोई MongoDB + पायथन (Django) + AngularJS के साथ खोज कर रहा है तो परिणाम आना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.