jQuery表单插件:字段值序列化

时间:2011-01-10 20:10:02

标签: javascript jquery ajax escaping

我习惯使用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();
        }
    });
}

不幸的是encodeURIescape都无法正常使用'或+或德语变音符号等特殊字符。

问题:对文本值进行编码的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

处理网址时,请勿使用escapeencodeURI+。只需将所有编码保留到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几乎没有意义,应该避免使用。