xmlhttprequest对象工作但没有给出响应输出?

时间:2012-06-01 09:06:36

标签: javascript xmlhttprequest responsetext

我有以下代码,我正在调用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);
}

2 个答案:

答案 0 :(得分:1)

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

如果你将那个param设置为false,你的代码就可以工作(但是不会异步并且会阻塞它(意味着它只会坐在那里直到响应回来)

这里是如何添加一个监听器(因为你的异步方法实际上是更好的方法)... http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

答案 1 :(得分:0)

像这样定义onload属性:

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

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

资料来源:MDN