2012-06-01 2 views
1

다음 코드는 작동하지 않으며 적절한 결과를 반환하지 않습니다.자바 스크립트에서 eventhandler 함수에서 반환?

function test(file) { 
var uri = "http://localhost/test.php"; 
var xhr = new XMLHttpRequest(); 
var result="done"; 
xhr.open("POST", uri, true); 
xhr.send(); 
xhr.onloadend=function() 
    { 
    result=xhr.responseText; 
    return result; 
    } 
} 

이벤트 처리기에서 돌아 오지 않거나 결과를 테스트 기능으로 돌려 보내겠습니까?

+0

한 가지 문제에 대해 하나 이상의 질문이 있습니까? 질문하기 : http://stackoverflow.com/questions/10847432/xmlhttprequest-object-working-but-not-giving-output-in-response 14 분 전 –

답변

1

이벤트 처리기에서 돌아 오는 것은 결과를 호출 범위로 반환하지 않습니다. 반환 값을 무시하기 위해 수신기를 연결하는 데 사용하는 DOM 이벤트 함수입니다. 당신은 온로드에서 결과에 액세스하려고하는 경우 이벤트 핸들러에서 복귀 괜찮

function test(file, callback){ 
    var uri = "http://localhost/test.php"; 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", uri, true); 
    xhr.send(formdata); 
    xhr.onload=function(){ 
     callback(xhr.responseText); 
    } 
} 
0

콜백에서 그렇게해야합니다,하지만 당신은 분명히가는 생각 어디 반환 값은 가지 않는다 . 대부분의 경우 이벤트 처리기는 true 또는 false 만 반환하므로 기본 동작을 사용하지 않을지 여부를 나타냅니다 (false은 "이 이벤트의 기본 동작 억제"를 의미 함). test() 함수 또는 test() 함수의 반환 값으로 onloadend 처리기의 반환 값을받을 수 없습니다. 함수가 이미 반환 된 시점에 이벤트 처리기가 비동기 적으로 실행되기 때문입니다.