jQuery Validation插件导致空的AJAX POST

时间:2010-03-30 19:14:16

标签: jquery ajax validation post

我试图在没有运气的情况下解决这个问题几天。我有一个表单,我使用验证插件,当我尝试提交它时,它提交空变量。现在,如果我删除验证,一切正常。这是我的实施:

$(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 :(得分:0)

为什么你甚至需要doAjaxPost?我想return false可能是罪魁祸首。你真的需要吗?

你不能这样做吗

...
submitHandler: function(form) {
    //do some stuff
    $(form).ajaxSubmit();
}
...

答案 1 :(得分:0)

我解决了这个问题,问题是我起诉的网址。而不是使用完整的URL:

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

我只是使用:

var url = "/ajax.php";

并且一切正常。


使用带cookie的php时,会自动发送会话ID 在请求标头中甚至是Ajax XMLHttpRequests。如果你使用或 允许基于URL的php会话,你必须为每个会话ID添加会话ID Ajax请求URL,或使用相对URL路径(如上面的解决方案)。

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

也适用。