如何停止AJAX函数提交

How to stop AJAX function submit?

本文关键字:提交 函数 AJAX 何停止      更新时间:2023-09-26

我正在为我的网站开发AJAX函数。我面临三个问题。

  1. 我的页面有2条JavaScript弹出错误消息,而不是1条带有相同消息的消息
  2. 在PHP中组合两个isset帖子。这对我不起作用
  3. 如果是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));
?>

对于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调用成功,您就重新提交表单。

这一次是因为您将checker设置为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参数,并检查该值。

简单的方法是注册。点击提交按钮执行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.');
        }
    }
  });
})