如何停止提交AJAX功能?

时间:2014-09-25 02:31:57

标签: javascript php jquery ajax

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

  1. 我的页面有2条JavaScript弹出错误消息,而不是1,消息相同。
  2. 在PHP中组合两个isset帖子。它不适合我
  3. 如果message == success,它如何通过表单中的操作提交,则它将保留在同一页面中。
  4. 我的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 个答案:

答案 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参数并检查值。