我试图在没有运气的情况下解决这个问题几天。我有一个表单,我使用验证插件,当我尝试提交它时,它提交空变量。现在,如果我删除验证,一切正常。这是我的实施:
$(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表单,它可以工作 - 任何线索???
答案 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>
也适用。