我正在为我的网站开发AJAX功能。我面临三个问题。
message == success
,它如何通过表单中的操作提交,则它将保留在同一页面中。我的HTML:
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<body>
<form method="POST" id="contactForm" action="www.alphaexile.com/method?=>
<input type="text" name="email" id="email"></input>
<input type="submit" name="submit1"></input>
</form>
<script type="text/javascript">
$('#contactForm').submit(function(e){
e.preventDefault();
var email = $('#email').val();
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'check.php',
data: {email: email},
success: function(data){
if(data.status == 'success') {
alert('The e-mail address entered is correct.');
} else {
alert('The e-mail address entered is Incorrect.');
}
}
});
});
</script>
</body>
</head>
我的PHP:
<?php
if (!empty($_POST['email'] || ($_POST['email']="Enter Your Email Here")) {
$status = 'success';
} else {
$status = 'failed';
}
echo json_encode(array('status' => $status));
?>
答案 0 :(得分:0)
简单的方法是在点击提交按钮时注册执行ajax代码,然后在提交操作中提交表单。
$('#contactForm [type="submit"]').click(function(e){
e.preventDefault();
var email = $('#email').val();
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'check.php',
data: {email: email},
success: function(data){
if(data.status == 'success') {
alert('The e-mail address entered is correct.');
$('#contactForm').submit()
} else {
alert('The e-mail address entered is Incorrect.');
}
}
});
})
答案 1 :(得分:0)
3)。
首先,您需要将提交按钮的名称从submit
更改为其他内容
$('#contactForm').submit(function (e) {
e.preventDefault();
var email = $('#email').val();
var frm = this;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'check.php',
data: {
email: email
},
success: function (data) {
if (data.status == 'success') {
alert('The e-mail address entered is correct.');
frm.submit();
} else {
alert('The e-mail address entered is Incorrect.');
}
}
});
});
对于2) - 不是一个PHP人(所以我不知道你是否可以使用$ _POST两次,但如果你不想使用它两次)。但看起来empty()
来电未正确关闭
<?php
$email = $_POST['email'];
if (empty($email) || $email="Enter Your Email Here") {
$status = 'failed';
} else {
$status = 'success';
}
echo json_encode(array('status' => $status));
?>
答案 2 :(得分:0)
这可以解决您的所有问题。
定义一个全局变量,在ajax完成时设置它。首先将其设置为false,这意味着您仍需要执行一些ajax调用。但是一旦ajax调用成功,你就重新提交表单。
这一次,因为您将检查器设置为true。这意味着ajax调用完成后,它将不再执行该调用,而只是提交表单。
var formSubmit = false; // define a global variable
$('#contactForm').submit(function(e){
if(!formSubmit){
e.preventDefault();
var emailParam = $('#email').val(); // change you variable name, it's confusing to read.
$.ajax({
type: 'POST',
dataType: 'JSON',
url: 'check.php',
data: {email: emailParam},
success: function(data){
if(data.status == 'success') {
alert('The e-mail address entered is correct.');.
formSubmit = true; // set the global variable to true.
$('#contactForm').trigger('submit') //resubmit the form
} else {
alert('The e-mail address entered is Incorrect.');
}
}
});
} else {
formSubmit = false;
}
});
对于PHP部分,你可以这样做
if (isset($_POST['email']) && $_POST['email'] != 'Enter Your Email Here') {
$status = 'success';
} else {
$status = 'failed';
}
echo json_encode(array('status' => $status));
die();
检查email
中是否设置了$_POST
参数并检查值。