簡體   English   中英

如何停止AJAX功能提交?

[英]How to stop AJAX function submit?

我正在為我的網站開發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));

?>

簡單的方法是在單擊“提交”按鈕后注冊執行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM