从filedrag.js提供的代码开始,我实现了上传文件异步功能。
问题是通话完成后我无法检索文本。实际上,我确定返回了文本,因为一旦 POST 请求完成,它就会显示在 firebug 控制台中。问题是我的代码没有将它添加到页面中。
这是代码:
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
function showHint(str,action,target,url) {
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("enctype","multipart/form-data");
var fd = new FormData;
fd.append('filexls', str);
xmlhttp.send(fd);
console.log(xmlhttp.status);
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
$('#successup').html(xmlhttp.responseText);
}
}
我已经做了一些测试,我认为问题出在代码的最后一部分。如果我将语句放在语句console.log(xmlhttp.status)
之前if
,它会返回0
(请求末尾的萤火虫会返回200
),而如果我将它放在if
控制台中,则什么都不会显示。所以我最好的猜测是问题在于该if
语句在实际请求完成之前运行,因此它返回false
。