2014-09-25 115 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