2014-02-24 88 views
-2

請幫助我,我有一個問題。這裏是我的代碼:返回undefined class javascript

function Cnx() { 
    var url = 'http://192.168.0.13/activity?name=flower'; 
    var solicitud = new XMLHttpRequest(); 
    this.res; 
    solicitud.addEventListener('load', cargar, false); 

    solicitud.open("GET", url, true); 
    solicitud.send(null); 

    function cargar(e) { 
     this.setRes(e.target.responseText); 
    } 

    this.setRes = function(valor) { 
     this.res = valor; 
    } 

    this.getRes = function() { 
     alert(this.res); 
    } 

} 

然後,我打電話:

var cnx= New Cnx(); alert(cnx.getRes());

但是,這將返回undefined。如果我從一個按鈕調用例如cnx.getRes(),它會返回正確的值。

注意:ajax調用工作正常。

爲什麼會發生這種情況?

非常感謝您的進步。對不起我的英語不好......

+3

也許因爲'getRes'不返回任何東西? – Phil

+0

你的實際'e.target.responseText'輸出是什麼?嘗試'console.log(e.target.responseText);' –

+0

非常感謝你們倆。 – user3348765

回答

1

除了埃德的觀察還有另外一個問題:

控制流不會等待了XMLHttpRequest調用New Cnx();後才能完成。因此,如果您在致電cnx.getRes()之前未等待請求完成,則響應將永遠不可用。

您可以做的最好的事情就是將其餘的代碼放入您的cargar函數中,一旦加載響應,函數就會自動調用。

+0

thanks're絕對正確,我修復了我的腳本,它能正常工作。 – user3348765

+0

+1爲好。 –

0

getRes()沒有返回值,所以返回值是未定義的。

+0

YMMD的回答也是正確的;你將需要解決這兩個問題。 –

+0

我已經感謝 – user3348765