Sin骑士
Sin骑士
  • 发布:2016-03-31 18:01
  • 更新:2016-04-07 22:05
  • 阅读:2548

mui.ajax中设置dataType:'json'之后乱码

分类:MUI

mui.ajax中设置dataType:'json'之后,服务器返回的数据解析成乱码
而不设置直接console.log(data)是正常的,手动JSON.parse(data)转换服务器返回的数据也正常不乱码,
这是为什么?难道mui.js包有问题?

2016-03-31 18:01 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

给个可以测试的在线服务器请求地址

  • Sin骑士 (作者)

    代码如下,调用这个ajax,返回的data结构是这样的{'result':'SUCCESS','message':'msg'}

    但是声明dataType:'json'之后,输出msg都是一串问号,不管是console还是alert

    而如果不声明dataType:'json',而使用data = JSON.parse(data);就很正常


             $.ajax({  
    type:"post",
    url:"http://www.sinknight.com/family/user/login",
    timeout: 10000,
    data: {username: loginInfo.account, password: loginInfo.password},
    dataType: 'json',
    success: function(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

6uLDzkpX0VvY5W

6uLDzkpX0VvY5W

将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  
    };

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