在javascript中返回eventhandler函数?

时间:2012-06-01 09:21:24

标签: javascript xmlhttprequest

以下代码无效并且未返回正确的结果。

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

从事件处理程序返回是否有错,或者只是将结果返回给测试函数?

2 个答案:

答案 0 :(得分:1)

在事件处理程序中返回,正如您所做的那样,不会将结果返回给调用范围。用于附加侦听器的DOM事件函数忽略返回值。 如果您尝试从onload访问结果,则需要在回调中执行此操作

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

答案 1 :(得分:0)

从事件处理程序返回是可以的,但是你的返回值不会出现在你认为可行的地方。在大多数情况下,事件处理程序应仅返回truefalse,这表示是否要禁用默认行为(false表示“禁止此事件的默认行为“)。无法在onloadend函数中接收test()处理程序的返回值或作为test()函数的返回值,因为事件处理程序是异步执行的,你的功能已经返回的时间。