panyh
panyh
  • 发布:2017-12-04 16:11
  • 更新:2017-12-07 12:48
  • 阅读:1574

【报Bug】异常状态请求时:new window.plus.net.XMLHttpRequest().responseText为undefined,抓包工具不为空

分类:HBuilder

详细问题描述
[内容]异常状态请求时:new window.plus.net.XMLHttpRequest().responseText为undefined,抓包工具不为空

重现步骤
[步骤]Common.xhr = new window.plus.net.XMLHttpRequest();
Common.xhr.onreadystatechange = function() {
if(Common.xhr.readyState != null && Common.xhr.readyState == 4) {
console.log(Common.xhr.responseText);
}
[结果]undefined
[期望]有数据

运行环境
[系统版本]8.8.7.201711221929
[浏览器版本]
[IDE版本]
[mui版本]

附件
[代码片段]Common.xhr = new window.plus.net.XMLHttpRequest();
Common.xhr.onreadystatechange = function() {
if(Common.xhr.readyState != null && Common.xhr.readyState == 4) {
console.log(Common.xhr.responseText);
}

[安装包]

联系方式
[QQ]
[电话]18198854309

2017-12-04 16:11 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

经过测试,只有Android上存在此问题,iOS无此问题。
非必要情况下,可以直接使用window的XHR,测试没有此问题。
参考http://ask.dcloud.net.cn/article/865中对window和5+相关XHR的使用说明。
目前已知的,只有iOS中使用WKWebview时,实现跨域请求需要用到5+的XHR。其他情况下,window的就可以满足需求。

用附件中给出的例子测试,readystate为3时,就已经获取到responseText的值了。

panyh

panyh (作者) - p

demo:
document.addEventListener('plusready', function(){
var xhr = new plus.net.XMLHttpRequest();
xhr.onreadystatechange = function () {
switch ( xhr.readyState ) {
case 0:
alert( "xhr请求已初始化" );
break;
case 1:
alert( "xhr请求已打开" );
break;
case 2:
alert( "xhr请求已发送" );
break;
case 3:
alert( "xhr请求已响应");
break;
case 4:
if ( xhr.status == 200 ) {
alert( "xhr请求成功:"+xhr.responseText );
} else {
alert( "xhr请求失败:"+xhr.readyState+"responseText:"+xhr.responseText);
}
break;
default :
break;
}
}
//bo=true为正常,bo=false为异常
xhr.open( "GET", "http://tongdao.seejoys.net.cn/api/try?bo=false" );
xhr.send();
}, false );

  • Trust

    确认bug,参考最新回复处理一下。

    2017-12-05 12:08

  • panyh (作者)

    回复 Trust:什么时候能解决这个bug呢,以前使用都不会出现这个问题,我们如果调整的话工作量挺大的

    2017-12-05 14:42

  • Trust

    回复 panyh:plus.net调整成window就可以了

    2017-12-05 14:54

  • panyh (作者)

    回复 Trust:调整为window,而responseText依旧为空。var xhr = new window.XMLHttpRequest();

    2017-12-05 15:04

  • Trust

    回复 panyh:用附件中给出的例子测试,readystate为3时,就已经获取到responseText的值了。

    2017-12-05 16:41

  • panyh (作者)

    回复 Trust:我现在只想能在readystate为4的情况下获取responsetext,如果是bug,我想知道什么时候能解决

    2017-12-05 18:19

  • Trust

    回复 panyh:确实是bug,已经反馈给相关同事了。这里给出临时方案,可以先这样处理。你可以用我上传的例子再测试下,我这边测试了几部手机都没问题才发出来的。

    2017-12-05 18:32

  • panyh (作者)

    回复 Trust:经测试,你的demo,只有比较新的安卓机才能进入readystate=3,其他的直接跳过

    2017-12-06 12:23

panyh

panyh (作者) - p

readystate为4,status不为200,responsetext就为空,抓包工具返回数据

panyh

panyh (作者) - p

什么时候能解决这个bug呢,以前使用都不会出现这个问题,我们如果调整的话工作量挺大的

Android_Yanbin

Android_Yanbin - 我们不一样

感谢您的反馈,问题已经确认,我们会及时跟进

该问题目前已经被锁定, 无法添加新回复