如何在POST的值参数中替换`&`?

时间:2015-11-18 16:37:13

标签: javascript jquery html

这是textarea使用tinyMCE

时的内容
helloóóó

我使用tinyMCE从textarea获取内容并将其解析为我当前的字符串:   行动=更新&安培;范围=设置和ID = content_home&安培;含量=helloóóó

当我通过POST向服务器发送此消息时,我的content值会在hellohelloóóó时结束。

我能以某种方式解决这个问题吗?对此有特殊的方法吗?

这是我构建字符串的方式:

var textarea = $(this).parent().find('.tinymce').first()
if (textarea.length) {

    var content = tinyMCE.get(textarea.attr('id')).getContent();
    data += '&content=' + content;
}

$.ajax({
    type : "POST",
    url : url,
    data : data,
    dataType : "json",
    success : function(back) {}
});

3 个答案:

答案 0 :(得分:3)

正如另一个答案指出你需要使用encodeURIComponent

data += '&content=' + encodeURIComponent(content);

但更好的选择就是将数据放入对象中,让jQuery为您处理。

var data = {
   action : "update",
   range : "settings"
   /* your other fields */
};
data.content = content;

$.ajax({
    type : "POST",
    url : url,
    data : data,
    dataType : "json",
    success : function(back) {}
});

答案 1 :(得分:2)

您需要对值进行URL编码。尝试使用encodeURIComponent()方法。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

答案 2 :(得分:1)

óó的html编码版本。您可以使用html_entity_decode对其进行解码。

我不确定为什么数据会被HTML编码,这似乎是一个错误。我希望它是URL编码的。当您收到数据时,它将被解码。至少它需要进行一次URL编码,HTML编码是可选的。

// url encoded:
action=update&range=settings&id=content_home&content=hello%C3%B3%C3%B3%C3%B3
// url encoded and html encoded:
action=update&range=settings&id=content_home&content=hello%26oacute%3B%26oacute%3B%26oacute%3B