2014-09-25 71 views
0

我正在爲我的網站開發AJAX功能。我面臨三個問題。如何停止AJAX函數提交?

  1. 我的頁面有2條JavaScript彈出式錯誤消息,而不是1條消息。
  2. 將兩個isset帖子合併到PHP中。它不適用於我
  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)); 

?> 
+1

檢查你的ajax成功functoin,你是重新提交窗體'form.submit()' – andrex 2014-09-25 02:33:08

+0

我會修復問題2 – 2014-09-25 02:33:25

+0

@andrex,它仍然返回,即使我禁用它。 – JayVicious 2014-09-25 02:35:53

回答

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)); 

?> 
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.'); 
     } 
    } 
    }); 

}) 
+0

當我更改它時,我的ajax突然停止工作,而是使用我的html表單操作。 – JayVicious 2014-09-25 02:38:29

+0

我不明白爲什麼會這樣。請在更改它時發佈整個代碼,我會看看。你需要把$('form')。submit()返回到 – 2014-09-25 02:46:40

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設置和檢查的價值。

+0

我愛你PHP部分現在離開數字1! – JayVicious 2014-09-25 02:57:59

+0

你我的JavaScript代碼它也應該解決你的號碼1,2和3.只要試一試,沒有什麼壞處。 – andrex 2014-09-25 03:00:45

+0

呃,沒有彈出,它沒有讀取我的PHP功能:(即使是正確的或錯誤的,它仍然在做html格式的動作。 – JayVicious 2014-09-25 03:09:06