自定义类
var httpRequest = function() {
var $this = this;
$this.data = {};
$this.host = '你的地址';
$this.addData = function(key, value) {
if(!value)return;
$this.data[key] = value;
};
$this.request = function(url, method, callback, asynch) {
callback=callback||mui.noop;
asynch = asynch == null ? true : asynch;
var data = new FormData();
if(MEMBER){
data.append('uid', MEMBER.uid);
data.append('token', MEMBER.token);
}
// var appVersion = app.getVersion();
// data.append('version', appVersion);
// data.append('method', method);
// data.append('access_token', APP_BASE.access_token);
// data.append('open_id', app.getState().open_id || '');
for (key in $this.data) {
data.append(key, $this.data[key]);
}
var XML = new XMLHttpRequest();
var XMLtimeout = setTimeout(function(){
if(XML)XML.abort();
},2000);
var result = {info:'接口错误',code:400};
XML.onreadystatechange = function() {
if (XML.readyState == 4) {
console.log(XML.responseText);
if(XMLtimeout)clearTimeout(XMLtimeout); //模拟的超时处理机制
try{
if(JSON.parse(XML.responseText).ret==200){
result=JSON.parse(XML.responseText).data;
console.log(result.info);
}
}catch(e){
if(e instanceof SyntaxError){
console.log('错误的数据接口:' + url);
}
}
callback(result);
}
};
console.log($this.host+url);
XML.open('POST', $this.host + url, asynch);
XML.send(data);
};
$this.get = function(url, callback, asynch) {
$this.request(url, 'GET', callback, asynch)
};
$this.post = function(url, callback, asynch) {
$this.request(url, 'POST', callback, asynch)
};
$this.put = function(url, callback, asynch) {
$this.request(url, 'PUT', callback, asynch)
};
$this.delete = function(url, callback, asynch) {
$this.request(url, 'DELETE', callback, asynch)
}
};
23 个回复
anke
其它人就没遇到过这样的问题?顶起来
Android_磊子
用mui.ajax时候添加一个传入属性值crossDomain,如下:
mui.ajax({
…
crossDomain:true
…
});
蔡繁荣 (作者)
这是什么原因导致的啊,原理是什么呢?
2015-07-28 13:50
Android_磊子
回复 蔡繁荣:可以了吗?
2015-07-28 13:54
蔡繁荣 (作者)
回复 Android_磊子: 本来有网络但是提示abort,加了crossDomain马上正常请求,暂时算搞定,感谢!但还需要测试一段时间,如果过段时间,测试人员那边没反馈该问题,我就过来结贴:)
2015-07-28 13:58
c***@126.com
我加了crossDomain:true 后,可以了一次,然后又不行了,求指教
2016-09-04 14:30
Android_磊子
回复 c***@126.com:@990
2016-09-07 11:10
lucida
也遇到这样的问题了,用楼上的方式,试试先
DCloud_UNI_FXY
什么接入方式?
用HBuilder创建的移动应用?
集成webview方式?
集成SDK方式?
蔡繁荣 (作者) - 发表是最好的记忆
HBuilder创建的移动应用
使用mui.ajax去请求接口
什么接入方式?
集成webview方式?
是?没明白
DCloud_UNI_FXY
是所有手机都这样,还是部分手机这样?
2015-07-28 17:32
蔡繁荣 (作者)
回复 DCloud_UNI_FXY:iOS模拟器这样,iPhone4s这样,华为手机也是这样,三星Note3,小米2也是,经常abort
2015-07-28 21:42
DCloud_UNI_FXY
回复 蔡繁荣:有什么必现的操作流程步骤没有?
2015-07-29 01:46
蔡繁荣 (作者)
回复 DCloud_UNI_FXY:特别是网络切换后,直接abort罢工,即使10M光纤WIFI,比如回家后,网络环境变了,家里10Mwifi,别的用户正常可用,H5+的提示网络错误
2015-07-29 09:56
蔡繁荣 (作者) - 发表是最好的记忆
特别是网络切换后,直接abort罢工,即使10M光纤WIFI
hehui5202006
楼主是否已经解决这个问题?我现在也遇到这个问题,急啊
蔡繁荣 (作者)
你试试前面 DCloud_Android_磊子 的方案,过段时间再过来反馈看还会不会abort
2015-07-31 12:21
hehui5202006
回复 蔡繁荣:已经试过了,没用。加上这个之后直接连error都不进了。返回的json我也用工具解析过了,没有有错误。实在是没办法了。
2015-07-31 12:28
蔡繁荣 (作者)
回复 hehui5202006:你是不是用iOS的模拟器?WIFI重新打开,模拟器杀掉重新启动
2015-07-31 12:37
hehui5202006
回复 蔡繁荣:非常的奇怪,他都是ios不行,安卓没问题。但我恰好相反。ios可以,安卓出现这个问题
2015-07-31 14:31
IT狂人
我也遇到这问题,有大牛可以解决的吗?
ahtl_yy
同样遇到这样的问题,请教如何解决
l***@163.com
也遇到了,有解决的吗?
忙
说说我碰到的原因,我是因为页面里少写了个</form>,由此推及,可以先排除是不是代码里的标签不配对造成的。
3***@qq.com - 1
自定义类
var httpRequest = function() {
var $this = this;
$this.data = {};
$this.host = '你的地址';
$this.addData = function(key, value) {
if(!value)return;
$this.data[key] = value;
};
$this.request = function(url, method, callback, asynch) {
callback=callback||mui.noop;
asynch = asynch == null ? true : asynch;
var data = new FormData();
if(MEMBER){
data.append('uid', MEMBER.uid);
data.append('token', MEMBER.token);
}
// var appVersion = app.getVersion();
// data.append('version', appVersion);
// data.append('method', method);
// data.append('access_token', APP_BASE.access_token);
// data.append('open_id', app.getState().open_id || '');
for (key in $this.data) {
data.append(key, $this.data[key]);
}
var XML = new XMLHttpRequest();
var XMLtimeout = setTimeout(function(){
if(XML)XML.abort();
},2000);
var result = {info:'接口错误',code:400};
XML.onreadystatechange = function() {
if (XML.readyState == 4) {
console.log(XML.responseText);
if(XMLtimeout)clearTimeout(XMLtimeout); //模拟的超时处理机制
try{
if(JSON.parse(XML.responseText).ret==200){
result=JSON.parse(XML.responseText).data;
console.log(result.info);
}
}catch(e){
if(e instanceof SyntaxError){
console.log('错误的数据接口:' + url);
}
}
callback(result);
}
};
console.log($this.host+url);
XML.open('POST', $this.host + url, asynch);
XML.send(data);
};
};
上上
我也想知道,安卓手机总是跳到error,根本没法用,苹果就比较稳定,表示hbuilder创建的移动应用真心无力
cxian - 帅
4G流量abort了 wifi还能用,求救
1***@qq.com
解决了吗 我数据库都修改了 他还要报这个问题
付楚 - web前端开发
把编辑器和手机重启一下,问题就可以解决了
烫烫烫烫烫烫 - 木有
crossDomain:true
无效
ios10出现abort
http连接
烫烫烫烫烫烫
自己回答,不小心对应用单独禁止网络了,打开就好了
2018-01-15 20:11
爱门谁谁 - c
同样的问题 要吐血了 !
wayhbbeed - 110
wayhbbeed
使用5+扩展的 强制使用跨域来阻止abort,本身XMLHttpRequest是支持跨域的,但是有时候会被阻挡
2018-01-16 04:23
f***@163.com - 努力搬砖中。。。
同样的问题 要吐血了 !有没有解决办法啊?????
2***@qq.com
我也是,昨天好好的问遍了,就是没见mui专家解答。狗屁专家,核心还是外国的,不卵懂
鹏少
请问问题解决了嘛
2020-03-03 15:18
3***@qq.com
【报Bug】
我也遇到这个问题,mui.ajax 偶尔会有出现 abort, 网络一直连着wifi,且浏览百度正常
鹏少
请问mui.ajax 偶尔会有出现 abort的问题解决了吗
2020-03-03 15:18
鹏少
我也遇到了相同的问题,请问有解决的吗