我习惯使用data: $("form#myform").serialize()
发送带有jQuery表单的传递数据。在我目前的情况下创建单独的表单是没有意义的,因为只有两个字段。因此我创建了以下函数:
function storeNotificationMessage(name) {
var content = $("textarea#" + name).val();
var id = $('#id').val();
content = encodeURI(content); // tried this
content = escape(content); // and that
$.ajax({
async: false,
data: "entry=" + id + "&name=" + name + "&msg=" + msg,
type: 'post',
url: '?url=updateEntry',
success: function(response) {
done();
}
});
}
不幸的是encodeURI
和escape
都无法正常使用'或+或德语变音符号等特殊字符。
问题:对文本值进行编码的正确方法是什么?
答案 0 :(得分:1)
处理网址时,请勿使用escape
,encodeURI
或+
。只需将所有编码保留到jquery:
function storeNotificationMessage(name) {
$.ajax({
async: false,
data: {
entry: $('#id').val(),
name: name,
msg: $('textarea#' + name).val()
},
type: 'post',
url: '?url=updateEntry',
success: function(response) {
done();
}
});
}
备注:将AJAX用于async = false
几乎没有意义,应该避免使用。