ajax请求传中文字符给后台,返回乱码

首先第一种方式,我前端编码,但是后端又说他不配合解码,所以这个办法不能解决。

    api.ewAjax = function(url, method, params, callback) {
    method = method.toUpperCase() === 'GET' ? method : "POST";
    //  IE7+, Firefox, Chrome, Opera, Safari(XMLHttpRequest) 
    //  IE6, IE5(ActiveXObject)
    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    // GET or POST 请求
    if (method.toUpperCase() === 'GET') {
        url = params ? url + '?' + params : url;
        xhr.open(method, url);
        xhr.send();
    } else {
        if (params) {
            if (typeof params === 'string' && params.indexOf('=') !== -1) {
                xhr.open(method, url);
                xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
                xhr.send(params);
            } else {
                xhr.open(method, url);
                xhr.send(params)
            }
        } else {
            xhr.open(method, url);
            xhr.send()
        }
    }
    if (typeof callback === 'function') {
        xhr.onreadystatechange = function(e) {
            if (xhr.readyState === 4 && xhr.status === 200) {
                callback(JSON.parse(xhr.responseText));
            }
        }
        xhr.onerror = function() {
            callback(this.status);
        }
    }
    // the chaining method 
    this.then = function(fn) {
        xhr.onreadystatechange = function(e) {
            if (xhr.readyState === 4 && xhr.status === 200) {
                fn.call(this, JSON.parse(xhr.responseText));
            }
        }
        xhr.onerror = function() {
            fn.call(this, this.status);
        }
    }
    return this;
};

我用原生ajax封装的。
图片描述

后台用的tomcat服务器,我要晕死了。到底是我前端的错还是后端的问题啊。

阅读 1.4k
评论
    4 个回答

    这个封装的肯定有问题。为什么post还要把参数拼到url里?

      相似问题
      推荐文章