responseText为空,但显示在控制台上
responseText is empty, but shows on console?
这可能是一个愚蠢的错误,但我使用JQuery ajax对PHP后端,我想PHP脚本张贴进度回网页。
它看起来工作得很好,但我不能得到e.g target. responsetext的内容。
如果执行console.log(e.target),我将在控制台中获得XMLHttpRequest对象。我可以看到responseText: "1 av 1500 "
但是如果我执行console.log(e.a rtarget . responsetext),它是空的。
我疯了吗?
这是我的功能
$.ajax(
{
type: "POST",
url: "modEcs/ajax/ecs.php?a=analyseExcel",
processData: false,
contentType: false,
xhrFields:
{
onprogress: function(e)
{
console.log(e.target);
console.log(e.target.responseText);
}
},
success: function(data)
{
},
error: function (xhr, ajaxOptions, thrownError) { alert(xhr.statusText); }
});
控制台数据:
XMLHttpRequest
onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: function(e)
onreadystatechange: null
ontimeout: null
readyState: 4
response: "1 av 1500 linjer"
responseText: "1 av 1500 linjer"
responseType: ""
responseURL: "xxx"
responseXML: null
status: 200
statusText: "OK"
timeout: 0
upload: XMLHttpRequestUpload {onloadstart: null, onprogress: null, onabort: null, onerror: null, onload: null, …}
withCredentials: false
XMLHttpRequest-prototype
progress仅在XMLHTTPRequest期间触发,而不是在收到响应的最后触发
readyState 3: "Downloading; responseText holds partial data."
试试这个,
$.ajax({
type: "POST",
url: "modEcs/ajax/ecs.php?a=analyseExcel",
processData: false,
contentType: false,
xhr: function(){
var xhr = new window.XMLHttpRequest();
// Handle progress
xhr.addEventListener("progress", function(evt){
//Do some progress calculations
console.log(xhr.responseText);
}, false);
return xhr;
},
complete:function(){
console.log("Request finished.");
}
});
显然在onprogress
中它将是空的,因为服务器在进程期间不返回任何数据。你只能在success函数中读取responseText
。
你可以在控制台看到responseText
的原因(即使你在onprogress中调用.log()),是因为服务器实际上已经返回了数据,并调用了success
函数,因为你正在用e.target记录整个对象,对象可以随时更新,无论你在哪里记录它,控制台都会显示你的实时版本,而不是在控制台日志记录的确切时刻的版本。当对象被更改时,它也会在控制台的任何地方更新。但target.responseText
是一个原语,它不是一个对象,控制台不会更新它的值时,它的变化。
相关文章:
- Meteor js-控制台显示'未定义'即使返回结果
- 我的镀铬扩展程序没有't向控制台显示错误,但它显示日志
- 网络视图控制台显示安卓< 4.0 上的错误 |(JVectorMap)
- JavaScript输入不显示值,但控制台显示它有它
- 从控制台显示的数据属性值,但不使用脚本显示
- OOOjavascript:object self-reference返回undefined,但控制台显示它存在
- chrome控制台显示带有摘要身份验证的密码
- Chrome控制台显示未捕获类型错误:无法读取属性'启动'的未定义
- setTimeout不工作.控制台显示未定义latLng
- 控制台显示数组未定义
- 幻灯片停止工作控制台显示没有相关错误?但是这个无关
- 参数检查为空/未定义,尽管控制台显示值
- 无法用Jquery在Chrome控制台显示输出
- 自定义JavaScript异常不会在Google Chrome's控制台显示其消息
- 如何让chrome的控制台显示其动态更改的名称函数
- 检查文件是否存在,但防止在控制台显示404错误
- Chrome和ie的控制台显示'top'是'undefined',但是Safari和Fi
- 为什么控制台显示对象内容时,对象显示为未定义
- Javascript变量在IE中未定义,直到控制台显示
- 当我尝试使用ajax时,chrome的控制台显示“资源加载失败”