mui.ajax中设置dataType:'json'之后,服务器返回的数据解析成乱码
而不设置直接console.log(data)是正常的,手动JSON.parse(data)转换服务器返回的数据也正常不乱码,
这是为什么?难道mui.js包有问题?
Sin骑士
- 发布:2016-03-31 18:01
- 更新:2016-04-07 22:05
- 阅读:2548
将mui源码中 修改以下两行就能解决。 @DCloud_MUI_FXY 可以帮忙验证下。ajax 获取json格式 是有乱码的情况。
加了 contentType
还有accepts 的 json 修改为 json: "application/json, text/javascript, */*; q=0.01",
$.ajaxSettings = {
type: 'POST',
beforeSend: $.noop,
success: $.noop,
error: $.noop,
complete: $.noop,
context: null,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
xhr: function(protocol) {
return new window.XMLHttpRequest();
},
accepts: {
script: 'text/javascript, application/javascript, application/x-javascript',
json: "application/json, text/javascript, */*; q=0.01",
xml: 'application/xml, text/xml',
html: htmlType,
text: 'text/plain'
},
timeout: 0,
processData: true,
cache: true
};
Sin骑士 (作者)
代码如下,调用这个ajax,返回的data结构是这样的{'result':'SUCCESS','message':'msg'}
但是声明dataType:'json'之后,输出msg都是一串问号,不管是console还是alert
而如果不声明dataType:'json',而使用data = JSON.parse(data);就很正常
// data = JSON.parse(data);
console.log(data);
if (data && data.result == 'SUCCESS') {
owner.createState(loginInfo.account, callback);
return callback(true, '登录成功');
} else if (data && data.result == 'FAIL') {
return callback(false, data.message);
} else {
return callback(false, '服务器无响应,请稍后再试!');
}
},
error:function(xhr,type,errorThrown){
//异常处理;
return callback(false, '异常:服务器无响应,请稍后再试!');
},
async:true
});
2016-03-31 22:53
Sin骑士 (作者)
username和password随便填,会返回{'result':'FAIL','message':'用户名或密码错误!'}
2016-03-31 22:56