更新时间:2023-08-23 16:06:10
您需要做3件事.
首先,将您的jQuery代码包装在 $(document).ready()
函数中,
First, wrap your jQuery codes inside $(document).ready()
function,
<script type="text/javascript">
$(document).ready(function()
{
$('#form_signup').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'signup.php',
data: $(this).serialize(),
dataType: 'json',
success: function (data) {
console.log(data);
$('#form_signup_text').html(data.msg);
},
error: function (data) {
console.log(data);
$('#form_signup_text').html(data.msg);
}
});
});
});
</script>
第二,在表单中添加一个提交按钮.另外,您缺少电子邮件输入字段的 name
属性.这会导致php文件中的错误.
Second, Add a submit button to your form. Also you are missing the name
attribute for the email input field. That causes the error in the php file.
<form id="form_signup" name="form_signup" method="POST">
<div>
<input type="email" id="inputEmail1" name="inputEmail1" placeholder="your@email.com">
</div>
<div>
<input type="submit" name="signup" value="Sign Up!"/>
</div>
<div id="form_signup_text">
<!-- A fantastic notice will be placed here =D -->
</div>
</form>
第三, echo
个结果,因为您正在使用AJAX提交表单. return
不会有任何影响.
Third, echo
the results since you are using AJAX to submit the form. return
will not have any effects.
<?php
$our_mail = "our@email.com";
$subject = "Wohoo! A new signup!";
$email = $_POST['inputEmail1'];
$return = array();
$return['msg'] = 'Thank you!';
$return['error'] = false;
if(preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)){
$message = "Yesss!! We receive a new signup!
E-mail: $email
";
mail($our_mail, $subject, $message);
}
else {
$return['error'] = true;
$return['msg'] .= 'Something is wrong... snifff...';
}
echo json_encode($return);exit;
我检查了,一切正常.
希望这会有所帮助:)