2014-02-24 3 views
-2

도와주세요, 문제가 있습니다. 여기 내 코드입니다 :돌아 가기 정의되지 않은 클래스 자바 스크립트

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

을하지만,이 정의되지 않은 반환

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); 
    } 

} 

다음, 나는 호출합니다. 예를 들어 버튼에서 cnx.getRes()를 호출하면 올바른 값을 반환합니다.

참고 : ajax 호출이 정상적으로 작동합니다.

왜 이런 일이 발생합니까?

대단히 감사합니다. 죄송합니다 내 나쁜 영어 ...

+3

아마도'getRes'가 아무 것도 반환하지 않기 때문에? – Phil

+0

실제'e.target.responseText' 결과는 무엇입니까? 보십시오'console.log (e.target.responseText); ' –

+0

둘 다 대단히 감사합니다. – user3348765

답변

1

에드의 관찰 외에 또 다른 문제가 있습니다. cnx.getRes()을 호출하기 전에 요청이 완료 될 때까지 기다리지 않으면 응답을 사용할 수 없습니다.

가장 좋은 방법은 응답을로드하자마자 자동으로 호출되는 cargar 함수 안에 나머지 코드를 넣는 것입니다.

+0

고마워, 내 스크립트를 수정하고 제대로 작동합니다. – user3348765

+0

+1 좋은 잡기. –

0

에는 반환 값이 없으므로 값이 정의되지 않았습니다.

제어 흐름이 New Cnx();를 호출 한 후 완료 XMLHttpRequest를 기다리지 않습니다 :

+0

YMMD의 대답도 정확합니다. 두 가지 문제를 모두 해결해야합니다. –

+0

나는 이미 덕분에 – user3348765

관련 문제