$ .ajax json数据的字符集编码

时间:2014-05-22 08:28:53

标签: ajax json encoding

我做了简单的ajax请求。 代码是这样的。

var paramObject = new Object();
    paramObject.cd_nm01 = 'farm';
    paramObject.cd_nm02 = 'server';
    paramObject.cd_nm03 = 'cpu_num';
    paramObject.cd_nm04 = 'mem_size';
    paramObject.cd_nm05 = 'user_hdd';
    paramObject.cd_nm06 = 'net_sprt';
    paramObject.cd_nm07 = 'net_type';

    var codes = JSON.stringify(paramObject);

    $.ajax({
        type: 'POST',
        async: false,
        cache: true,
        dataType: 'json',
        beforeSend: function(xhrObj){
        xhrObj.setRequestHeader("Content-Type", 'application/x-www-form-urlencoded;      charset=UTF-8');
        },
        url: '/common/getCodes',
        data: {
        'jParam' : codes
        },
        success: function(data, status ,xhr) {
        console.log(data);
        },
        error: function(xhr){
        }
    });

我想发送此数据:"'cd_nm':'farm','cd_nm':'server','cd_nm':'cpu_num','cd_nm':'mem_size','cd_nm':'user_hdd','cd_nm':'net_sprt','cd_nm':'net_type'}"

但在控制器(Spring 3.1)中, 如果我从请求中获取这些值, 他们看起来像下面。

%7B%22cd_nm01%22%3A%22farm%22%2C%22cd_nm02%22%3A%22server%22%2C%22cd_nm03%22%3A%22cpu_num%22%2C%22cd_nm04%22%3A%22mem_size%22%2C%22cd_nm05%22%3A%22user_hdd%22%2C%22cd_nm06%22%3A%22net_sprt%22%2C%22cd_nm07%22%3A%22net_type%22%7D

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的请求只是网址编码,就像它应该的那样。如果您解码它,它看起来像这样:

{" cd_nm01":"农场"" cd_nm02":"服务器"" cd_nm03":& #34; cpu_num"" cd_nm04":" mem_size"" cd_nm05":" user_hdd"" cd_nm06&# 34;:" net_sprt"" cd_nm07":" net_type"}

对我来说这看起来像是有效的json。您要发送数据的表单看起来不正确。你想使用单引号而你没有领先的括号。如果您不想要01,02,03后缀,则可能需要更改JSON.stringify方法以接受字符串数组而不是对象。