[英]How to stop AJAX function submit?
我正在為我的網站開發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));
?>
簡單的方法是在單擊“提交”按鈕后注冊執行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.');
}
}
});
})
對於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));
?>
這應該解決您所有的問題。
您定義一個全局變量,在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();
檢查$_POST
是否設置了email
參數,並檢查該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.