如何在使用Jquery序列化时转义字符?

时间:2017-02-13 22:04:05

标签: javascript jquery ajax serialization escaping

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

<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.
                        });
            });

但由于这个原因,这不起作用。在名字中。由于我没有单独抓住它们,我不能使用通常的// escape方法。知道如何指示序列化来逃避这些时期吗?

1 个答案:

答案 0 :(得分:-1)

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

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

这是修复问题的一种简单方法,但可能需要在正则表达式方面进行更多细化。

JS Fiddle