当我使用remote method中的jQuery Validation Plugin并按下提交按钮时,$_POST
数组中未列出提交按钮名称。这是一个错误还是我做错了什么?
这是一个小例子:
<?php
if(!empty($_POST))print_r($_POST);
?>
<form method="POST" id='mainForm'>
<input type='email' name="email" value="test@test.com">
<button name="superbutton">Press me</button>
</form>
当我像这样添加jQuery Validation Plugin时
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true
}
}
});
我仍然得到相同的输出。但是,当我添加远程方法时:
$("#mainForm").validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "test.php"
}
}
}
});
使用 test.php
<?php
header('Content-Type: application/json');
echo json_encode("true");
然后superbutton
不再位于&#39; $ _ POST`数组中。
我在这里做错了吗?
答案 0 :(得分:1)
使用本地验证方法时,jquery-validate在验证失败时调用event.preventDefault()
,否则正常返回以允许正常表单提交。
远程验证无法做到这一点,因为AJAX是异步的。它不等待响应,因此它总是阻止正常的表单提交。收到AJAX响应后,它会使用Javascript form.submit()
提交表单。
使用Javascript提交表单时,浏览器不知道触发原始提交的按钮,因此它不会包含在POST数据中。