以下代码无效并且未返回正确的结果。
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 :(得分: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)
从事件处理程序返回是可以的,但是你的返回值不会出现在你认为可行的地方。在大多数情况下,事件处理程序应仅返回true
或false
,这表示是否要禁用默认行为(false
表示“禁止此事件的默认行为“)。无法在onloadend
函数中接收test()
处理程序的返回值或作为test()
函数的返回值,因为事件处理程序是异步执行的,你的功能已经返回的时间。