Проблемы с отправкой формы после использования .getJSON для отправки на другой сайт - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть форма, которая проверяется с помощью jQuery Validate, а затем отправляется на сторонний сайт подписки.

Я тоже пытаюсь опубликовать представление в другом месте.

Вот моя форма:

<form class="" action="http://www.fakelink.com/forms/userSubmit.jsp" method="post" id="providerDemoForm" accept-charset="UTF-8">    
<fieldset>
  <ul class="undecorated group">
    <li>
      <label for="fld_1_fn">First Name*</label>
      <input type="text" name="First Name" id="fld_1_fn" class="required" onFocus="clearMsg();" />
    </li>
</fieldet>
</form>

Вот мой сценарий проверки:

<script type="text/javascript">

function postCMFields() {
  $.getJSON(
     "http://sample.createsend.com/x/x/x/fmill/?callback=?",
     $('#providerDemoForm').serialize()
     );
}

$(document).ready(function() {
  $("#providerDemoForm")[0].reset();

  $("#providerDemoForm").validate({
   errorClass: "fieldWithErrors",
   validClass: "valid",
   highlight: function(element, errorClass, validClass) {
     $(element).parent("li").addClass(errorClass);
   },
   unhighlight: function(element, errorClass, validClass) {
     $(element).parent("li").removeClass(errorClass);
   },
   errorContainer: "#formErrorMsg",
   errorLabelContainer: "#messageBox",
   wrapper: "li", debug:false,              

   submitHandler: function(form) {
     $('#formErrorMsg').hide();

     postCMFields();         

     form.submit();

   },
   invalidHandler: function(form, validator) {
     $('#formErrorMsg').show();
   }
  });
});
</script>

Все отправляется, если у меня нет этой части getJSON (форма отправляет URL-адрес действия). Однако, если я добавлю функцию публикации содержимого с помощью JSON в URL моего монитора кампании, это не сработает. Кроме того, если я закомментирую "form.submit ()", данные будут опубликованы на мониторе кампании.

Есть что-то, что я пропускаю? Спасибо!

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Я не уверен, почему мой код не работал, но я думаю, что это потому, что мой тип MIME не был установлен правильно.Я смог заставить все работать, обновив мою функцию postCMFields для использования .ajax:

var cmdata = $('#providerDemoForm').serialize();

$.ajax({
   type: "GET",
   data: cmdata,
   url: "http://fake.createsend.com/x/x/x/fmill/?callback=?",
   async: false,
   beforeSend: function(x) {
      if(x && x.overrideMimeType) {
         x.overrideMimeType("application/j-son;charset=UTF-8");
      }
   },
   dataType: "json",
   success: function(data){             
      form.submit();
   }
}); 
0 голосов
/ 23 сентября 2011

URL кажется вымышленным.http://sample.createsend.com/x/x/x/fmill/?callback=? выглядит как URL-адрес get, с которым вы связываете переменные.

...