2017-02-13 13 views
-1

У меня есть страница формы, в которой мне нужно сделать некоторые материалы AJAX перед отправкой, и я использую сериализацию для [анализировать ее, однако форма ввода имен содержит символы периода в них (ничего не могу сделать по этому поводу, ее CRM quirk), который нарушает ajax - как я могу избежать их в этом случае? В основном форма:Как избежать символов при использовании Jquery serialize?

<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

Что вы имеете в виду * "нарушение Аякса" *? – Phil

+1

Просто попробовал быстро, и значения были сериализованы и отправлены правильно, например 'yP7h.zGDK46p8rq8qzJYDnru9D87Zfw2y = email @ example.com' – Phil

ответ

-1

Вы можете использовать регулярное выражение замены просто удалить периоды, которые содержатся в названиях входных, как, например:

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

Это мертвый простой способ фиксации проблемы, но, вероятно, нужно гораздо больше утонченности на регулярная сторона вещей.

JS Fiddle