发送前的Ajax编码参数?

时间:2016-04-15 14:33:41

标签: jquery json ajax encodeuricomponent

我有这个ajax电话

$.cordys.ajax({
        url   : "xxx"
        method: "xxx",
        namespace: "xxx",
        parameters: {
            Lines : {
                "@xmlns" : "http://www.exemple.com",
                Line : TFLines
            }
        },
        success: function(data) {
            console.log(data);
        }

    }).fail(function(error) {
        alert(error);
    });

我想发送一个对象Line,它是Line的集合,对象TFLine是一个数组,看起来像这样:

[{
  @xmlns: "http://exemple.com",
  Code: "DENOLEGAL",
  Comments: "",
  Content: "<![CDATA[<strong>test</strong>]]>",
  DisplayedLanguageId: "1",
  DisplayedLanguageName: "FR",
  IsMandatory: "1",
  Label: "Dénomination légale de vente"
}, {...}
]

我的问题在于我有特殊字符的字段内容。 这些数据必须以Json格式发送,但在目标应用程序中它将被转换为XML(这就是为什么我需要用CDATA标签封装我的数据)

在ajax调用之前的Juste我的数据集看起来完全像这样,但是当我查看控制台的请求有效负载时,字段Content已被编码为:

&lt;![CDATA[&lt;strong&gt;test&lt;/strong&gt;]]&gt;

我认为ajax库做到了,实际上没有,我把断点放在库的每个地方使用encodeURIComponent(),任何人都停止了

你知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

The payload was HTML encoded (not URL encoded). So, you could find out if some part of the code is Html-encoding the payload data

The payload should be encoded as

%3C!%5BCDATA%5B%3Cstrong%5Btest%3C%2Fstrong%5B%5D%5D%5B