我想提交表单,并且AJAX调用应该将该数据发送到我的php文件中。在我的php文件中是一封电子邮件验证,filter_var
如果验证返回false,则响应应返回Javascript。除了验证部分,它的工作原理也很棒。但是,每次我要提交并检查它是否为有效电子邮件时,它都会通过“请输入有效电子邮件”返回false。等于有效或错误的电子邮件地址。
更新-09.08.2014 / 04:12
现在,如果没有错误消息,它基本上可以工作,但是我得到了一个Cannot read proberty "isError" of null
合乎逻辑的问题。但是,不知道如何避免该问题,才能将其正确地传递回javascript。
的HTML
<form action="submit.php" id="SubmitForm" method="post">
<input id="mail" name="mail" type="text" />
</form>
<button id="submitAll">
<span>Submit</span>
</button>
Java脚本
function submit() {
var $form = $('form#SubmitForm');
$.post(
$form.attr('action'),
$form.serialize(),
function (data) {
if (data.isError) {
$errMsg.empty().text('Please enter a valid email');
} else {
document.location.href = "submit.php"
}
},'json'); }
的PHP
$profileEmail = $_POST['mail'];
$errorMessages = array();
if(!filter_var($profileEmail, FILTER_VALIDATE_EMAIL)){
$errorMessages[] = "* Please enter a valid e-mail";
} else {
$errorMessages[] = "* Valid e-mail";
}
if (!empty($errorMessages)) {
die(json_encode(array('isError' => true, 'errorMessages' => $errorMessages)));
}
你的问题很简单-你给你的输入栏的ID( mail
),而不是一个name
,因此,序列化不工作-你只是发送一个空的查询字符串到服务器。
你需要:
<input id="mail" name="mail" type="text" />
我总是同时使用名称和ID,因为表单提交要求使用前者和ID,但是使用后者(更)容易进行DOM操作。
编辑以避免在解决上述问题后发现新问题,只需确保您的脚本始终返回一些有效的JSON,即使它只是{}
。您已要求服务器提供一些JSON-您必须返回一些。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句