【发布时间】:2016-11-11 13:05:50
【问题描述】:
这可能是一个愚蠢的错误,但我正在对 PHP 后端使用 JQuery ajax,我希望 PHP 脚本将进度发布回网页。
它看起来工作正常,但我无法获取 e.target.responseText 的内容。
如果我执行 console.log(e.target),我会在控制台中获得 XMLHttpRequest 对象。我可以看到 responseText:“1 av 1500 linjer”
但如果我执行 console.log(e.target.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
【问题讨论】:
-
请向我们展示从
console.log(e.target);返回的数据 -
我已经添加了
-
console.log(JSON.stringify(e.target));猜测responseText不存在。 -
我现在无法对此进行测试,但我很确定您所看到的是查看控制台数据时的常见混淆。当您记录属性本身时,您正在记录一个原始值,因此它的 current 值被打印(空字符串)。当您记录整个对象时,您正在记录该对象的“实时”视图,因此当您在控制台中查看它时,请求已完成,因此您现在看到已完成的
responseText值。跨度> -
我不知道该属性是否要逐步更新,但如果不是,那么直接记录它时不会显示任何值,但记录整个对象时会出现因为该对象的“实时”视图。
标签: javascript jquery ajax xmlhttprequest