1

我有以下代码,其中我正在调用getlink.php脚本以获取给定文件的链接。但是当我这样做时,alert(xhr.responseText)它什么也没显示。但是如果我在控制台上输出,因为console.log("my object: %o", xhr); 它给出了responseText字段。代码是:

function linkFile(file) {  
    uri = "http://localhost/imgbag/getlink.php";  
    var xhr = new XMLHttpRequest();  
    var formdata= new FormData();
    formdata.append("linkFile",file);
    xhr.open("POST", uri, true);  
    xhr.send(formdata);
    console.log("my object: %o", xhr);
}
4

2 回答 2

1

当您在 xhr.open 中使用 true 时,它​​会将其设置为异步,这意味着响应将稍后返回,您需要通过附加侦听器来收集它。

如果您将该参数设置为 false,您的代码将起作用(但不会是异步的,并且会阻塞调用(这意味着它只会坐在那里直到响应返回)

这是添加侦听器的方法(因为您的异步方法实际上是更好的方法)... http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

于 2012-06-01T09:08:46.917 回答
0

像这样定义onload属性:

xhr.onload = function () {
    alert(xhr.responseText);
}

这确保alert只有在请求成功完成后才会发生。

资料来源:MDN

于 2012-06-01T09:15:43.553 回答