测试XMLHttpRequest跨域样例时发现如下错误,无法理解为什么出现这样的原因。
使用样例中的命令: xhr = new plus.net.XMLHttpRequest(); 有返回数据,但获取不到正确数据。
{{{
<?xml version="1.0" encoding="utf-8"?>
<response>
<error type="true" note="1001" servertime="2014-10-13 11:43:21"/>
</response>
}}}
去掉plus.net.,使用常规命令: xhr = new XMLHttpRequest(); 有返回数据,而且获取到正确数据。
{{{
<?xml version="1.0" encoding="utf-8"?>
<response>
<data language="cn" Id="1" />
<data language="en" Id="2" />
<data language="zh" Id="3" />
</response>
}}}
6 个回复
车仔 (作者)
没人知道plus.net.XMLHttpRequest()的bug吗?
DCloud_heavensoft
你得提供更详细的信息。把代码和测试服务器提供下。
因为默认肯定是可以用的,你这么说我们也无法重现和排查。
plus的xhr是新封装的为了解决跨域而存在的api。
elaine
返回的只能是字符串吗?
2014-10-16 11:33
车仔 (作者)
我使用的是Html5+自带样例
{{{
路径是push>xhr.html
}}}
修改了样例中的网址
{{{
url="http://www.dcloud.net.cn/";
xmlhttp.open("GET",url);
}}}
换成了我自己需要的接口
{{{
url = "http://api3.golivetv.tv/golivetvAPI/api2/getChannelList-getChannelList.action";
xmlhttp.open("POST",url);
xmlhttp.send("<?xml version=\"1.0\" encoding=\"utf-8\"?><request website=\"http://api3.golivetv.tv/golivetvAPI/api2/getChannelList-getChannelList.action\"><parameter iname=\"GetChannelList\" type=\"2\" language=\"en\" region=\"CN\"> <device devmodel=\"Android on nt72668 TCL\" dnum=\"404500646\" didtoken=\"8fdde03c0d724ef4a21607aefb9ddbcf\" dver=\"x\" devtype=\"1\" clienttype=\"TCL-AU-NT667K-S1\" /><live mac=\"5C36B82D4C22\" deviceid=\"3c8680aa47b21317a2bd9d37f43491d8a617efba\" livetoken=\"5d64e091da53885ffdc4df7b185d9b86\" livever=\"\"/><user userid=\"10090\" token=\"dc03e5039b354fd3b1f8fca85572e7f4\" uver=\"1\" /><data limit=\"0\" startseq=\"0\" /></parameter></request>");
}}}
现象是能正常访问,但拿不到正确数据。后来发现:
样例中的命令用了“plus.net.”字符串,有返回错误数据,但获取不到正确数据。
{{{
xhr = new plus.net.XMLHttpRequest();
}}} 。
后来我去掉“plus.net.”字符串,使用常规命令,有返回数据,而且获取到正确数据。
{{{
xhr = new XMLHttpRequest();
}}}
怀疑是plus.net.XMLHttpRequest()方式没有正确Send参数。还请帮忙查验。
elaine
我使用此方法,status一直为0 ,求解
2014-10-21 14:20
车仔 (作者)
有人知道plus.net.XMLHttpRequest()和原生XMLHttpRequest()的区别吗?
DCloud_heavensoft
@Array 给看下这个代码哪里有问题。
DCloud_App_Array
这个问题是plus xhr提交中http头默认Content-Type值为application/x-www-form-urlencoded导致。
iOS平台可以添加脚本手动指定类型:xhr.setRequestHeader('Content-Type','text/xml;charset=utf-8');
Android平台处理逻辑有bug,暂时无法避免,我们会尽快更新解决
elaine
什么时候能更新解决好了~~项目正 用着呢……使用plus.net.XMLHttpRequest()方式,status一直为0
2014-10-21 14:21