2014-09-25 65 views
0

我有一個問題,我的Ajax代碼沒有通過..就好像這些函數是空的。 我點擊提交,沒有任何反應..AJAX按鈕沒有提交,也沒有通過

我的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" > 
<input type="text" name="email" id="email"></input> 
<input type="submit" name="submit"></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> 

我check.php:

<?php 

if (isset($_POST['email'])) { 
    $status = 'success' 
} else { 
    $status = 'failed'; 
} 

echo json_encode(array('status' => $status)); 

?> 

當我點擊提交,它只是無可奈何.. 我想彈出錯誤。

有什麼我錯過了嗎?

+0

由於無效閉包導致腳本錯誤。檢查'else if'後面的括號不正確,並且「成功」回調缺少一個':' – 2014-09-25 01:00:45

+1

name =「submit」是一個否定的。 – wwwmarty 2014-09-25 01:04:07

+0

@MartyMcKeever,那麼如果我想打電話給isset後,我會需要它?沒有? – JayVicious 2014-09-25 01:05:47

回答

1

確保您傳遞給ajax調用的所有選項都是正確的。示例:數據類型需要變爲dataType,並且beforesend需要變爲beforeSend。

下面是引用:http://api.jquery.com/jquery.ajax/

+0

但是,如果我想從一個PHP調用函數,然後發送到Ajax提交,使用數據類型??因爲我讀了另一個stackoverflow如果JSON好使用得到函數 – JayVicious 2014-09-25 01:09:42

+0

我只是引用你缺乏大寫字母需要被大寫。數據類型只需要有一個大寫字母T以便它是dataType。 – 3abqari 2014-09-25 01:12:22

+0

當我改變它的價值時,它實際上什麼都不做,回到第1層......但是當我改變爲數據類型時,它可以工作。 – JayVicious 2014-09-25 01:14:29

1

的支架放錯位置,你缺少的「成功」回調:。請參見下面固定碼,

而且也如這裏的其他答覆中提到的情況下..

$('#contactForm').submit(function() { 
    var email = $('#email').val(); 
    $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     url: 'check.php', 
     beforeSend: function() {}, 
     //  v--- missing : 
     success: function (data) { 
      if (data.status == 'success') { 
       alert('The e-mail address entered is correct.'); 
      } else if (data.status !== 'success') { 
       alert('The e-mail address entered is wrong.'); 
      } 
     } // this was misplaced in the line below in your code 
    }); // this was misplaced in the line above in your code 
}); 
+0

謝謝,真正解決它,但現在一切都返回我,如果數據類型不成功a.k.a輸入的電子郵件地址是錯誤的..我把空和數字也返回給我的價值。 – JayVicious 2014-09-25 01:08:16

+0

現在實際上沒有什麼反應,我將數據類型更改爲dataType – JayVicious 2014-09-25 01:15:50

0

使用Firefox或Chrome的開發者工具嘗試調試。

在Chrome的DevTools例如:

  • 調試Javascript與源選項。或者你冷在你的.submit()函數中添加一些console.log()以確保事件處理程序正在觸發。
  • 使用network tab以確保正在進行ajax調用並檢查從服務器獲得的響應。
  • 最後但並非不重要,請檢查console tab是否有Javascript錯誤,以查看在腳本執行前是否有其他腳本引發錯誤。

使用這些技術,您可以識別出什麼可能是錯誤的,看看怎樣才能解決它。

+0

現在它適用於我,但一個簡單的問題..爲什麼我繼續有兩個彈出相同的消息? – JayVicious 2014-09-25 01:48:17

+0

可能是由於某種原因,alert()被調用了兩次,試圖添加一個「console log('called');」函數來檢查。如果發生這種情況,您將在DevTools的控制檯上看到2條消息。 – gerzenstl 2014-09-25 01:57:14