Плагин jQuery Validation приводит к пустому AJAX POST - PullRequest
0 голосов
/ 30 марта 2010

Я пытался решить эту проблему в течение нескольких дней, но безуспешно. У меня есть форма, где я использую плагин проверки, и когда я пытаюсь отправить его, он отправляет пустые переменные. Теперь, если я удалю проверку, все работает нормально. Вот моя реализация:

$(document).ready(function(){

 $("#myForm").validate({
  rules: {
    field1: {
      required: true,
      minlength: 5
    },
    field2: {
      required: true,
      minlength: 10
    }
  },
  messages: {
    field1: "this is required",
    field2: "this is required",
  },
  errorLabelContainer: $("#validate_msg"),
  invalidHandler: function(e, validator) {
    var errors = validator.numberOfInvalids();
    if (errors) {
        $("#validate_div").show();
    }
  },
  onkeyup: false,
  success: false,
  submitHandler: function(form) { doAjaxPost(form); }
 });
});

function doAjaxPost(form) {
  // do some stuff
  $(form).ajaxSubmit();
  return false;
}

Поскольку я написал, это не работает, когда у меня есть проверка, НО, если я удалю это, и просто добавлю

onsubmit="doAjaxPost(this.form); return false";

к моей форме HTML, это работает - любая подсказка ???

Ответы [ 2 ]

0 голосов
/ 31 марта 2010

Я решил эту проблему, проблема заключалась в том, что URL-адрес, на который я подал в суд за сообщение Вместо использования полного URL:

var url = "https://" + document.domain + "/ajax.php";

Я просто использую:

var url = "/ajax.php";

и все работает как надо.


При использовании php с cookie-файлами идентификатор сеанса будет автоматически отправлен в заголовках запросов даже для Ajax XMLHttpRequests. Если вы используете или разрешить сеансы php на основе URL, вам нужно будет добавить идентификатор сеанса к каждому URL-адрес запроса Ajax, ИЛИ используйте относительный путь URL (как в приведенном выше решении).

<script language="javascript" type="text/javascript">
//<![CDATA[
  var url = 'https://'+document.domain+'/ajax.php?<?=session_name(); ?>=<?=session_id(); ?>';
//]]>
</script>

Что тоже работает.

0 голосов
/ 31 марта 2010

Зачем вам вообще нужно doAjaxPost? И я думаю, что return false может быть виновником. Тебе это действительно нужно?

Разве ты не можешь просто сделать

...
submitHandler: function(form) {
    //do some stuff
    $(form).ajaxSubmit();
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...