【问题标题】:How to escape characters when using Jquery serialize?使用Jquery序列化时如何转义字符?
【发布时间】:2017-02-13 22:04:04
【问题描述】:

我有一个表单页面,我需要在提交之前执行一些 AJAX 操作,并且我正在使用序列化来[解析它,但是表单输入名称中包含句点字符(对此我无能为力,它是CRM 怪癖)正在破坏 ajax - 在这种情况下我该如何逃避它们?基本上形式是:

<form action="http://content.stuff.com" id="myid" class="form" method="POST" name="PPCform" >
<input name="uPEw.zMtH4.ptrq8qzoLXcwu7t87tfw2u" type="hidden" /> 
<input name="yP7h.zGDK46p8rq8qzJYDnru9D87Zfw2y" placeholder="Email"  type="text" value="">
<input type="submit" id="button-blue" value="SUBMIT AND CONTINUE" />
</form>

脚本是:

$("form").submit(function (event) {
                event.preventDefault(); 
    //FB pixel, other stuff
     $.post($(this).attr('action'), $(this).serialize())
                        .done(function () {
                            // redirect, etc.
                        });
            });

但这不起作用,因为 .在名字中。因为我没有单独抓住它们,所以我不能使用通常的 // 转义方法。知道如何指示序列化转义句点吗?

【问题讨论】:

  • “打破 ajax”是什么意思
  • 刚刚快速尝试一下,值被序列化并正确提交,例如yP7h.zGDK46p8rq8qzJYDnru9D87Zfw2y=email@example.com

标签: javascript jquery ajax serialization escaping


【解决方案1】:

您可以使用正则表达式替换来简单地删除输入名称中包含的句点,如下所示:

var serial = $(this).serialize().replace(/\.(?!com|net|org|us)/g,'')
$.post($(this).attr('action'), serial).done(function () {
    //Your code goes here.
});

这是解决问题的一种非常简单的方法,但可能需要在正则表达式方面进行更多改进。

JS Fiddle

【讨论】:

  • 对不起,这是一个糟糕的解决方案。为什么要从输入中删除字符?我想逃脱它。
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 2019-11-19
  • 2018-04-15
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
相关资源
最近更新 更多