Ajax,传递已编码的值

时间:2020-01-03 11:17:11

标签: javascript ajax

我正在尝试通过AJAX数据传递编码值,但它会继续对它进行编码。如何防止AJAX中的编码?

我的Ajax代码:

    $.ajax({
        url: form.attr("action"),
        data: {
            'at': ajax_params['at'],
        },
        type: form.attr("method"),
        success: function (data) {
            alert('Success');
        }
    });

ajax_params['at'] = 2%2C+4中的值

其中2和4是值,%2C是逗号,+是空格。使用多个逗号时,该值可以更长。

提交AJAX后的当前输出:

at = 2%252C%2B4

预期输出:

at = 2%2C + 4

2 个答案:

答案 0 :(得分:1)

您可以使用字符串设置data

data: "at=" + ajax_params['at'],

或对其进行解码,以便在再次对其进行编码时不会进行双重编码:

data: {
    'at': decodeURIComponent(ajax_params['at'])
},

旁注:在文字的属性名称中或在at上查找属性时,无需为属性ajax_params使用方括号和引号:

data: {
    at: decodeURIComponent(ajax_params.at)
},

at并不是JavaScript中的关键字或保留词(即使是从2009年ES5起,也是这样-启用了在该语言中使用未引用关键字的属性创建和访问表达式)。< / p>

答案 1 :(得分:0)

在发送前对其进行解码

data: {
  at: decodeURIComponent(ajax_params['at'])
},