【问题标题】:jQuery form plugin: field value serializationjQuery表单插件:字段值序列化
【发布时间】:2011-01-10 20:10:01
【问题描述】:

我习惯于使用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 都不能正确处理 ' 或 + 或德语变音符号等特殊字符。

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

【问题讨论】:

  • IIRC,如果您将data 作为关联数组发布,jQuery 应该负责转义值

标签: javascript jquery ajax escaping


【解决方案1】:

在处理 url 时不要使用 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 一起使用没有什么意义,应该避免。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2011-04-07
    • 2011-08-01
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多