Javascript 未执行AJAX调用
我只是带着AJAX调用来到这个角落,并试图学习它。我有一个表单,我正试图通过AJAX调用推送它,但却收到了一个它无法发送的持续错误,我无法用我的头脑去思考它为什么不工作 表格:Javascript 未执行AJAX调用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我只是带着AJAX调用来到这个角落,并试图学习它。我有一个表单,我正试图通过AJAX调用推送它,但却收到了一个它无法发送的持续错误,我无法用我的头脑去思考它为什么不工作 表格: <form class="form-horizontal" id="contact-form" method="post"> <div class="control-group"> <div class="controls">
<form class="form-horizontal" id="contact-form" method="post">
<div class="control-group">
<div class="controls">
<input type="text" name="name" id="name" placeholder="Naam" class="form-control input-lg">
</div>
</div>
<div class="control-group">
<div class="controls">
<input type="text" name="email" id="email" placeholder="Email adres" class="form-control input-lg">
</div>
</div>
<div class="control-group">
<div class="controls">
<textarea name="message" id="message" rows="8" class="form-control input-lg" placeholder="Bericht"></textarea>
</div>
</div>
<div class="form-actions">
<button type="submit" id="submit" class="btn btn-default btn-lg btn-block">Verstuur Bericht</button>
</div>
<div id="succes">
</div>
</form>
以及sendmail.php
$name = mysqli_real_escape_string($con,$_POST["naam"]);
$from = mysqli_real_escape_string($con,$_POST["email"]);
$message = mysqli_real_escape_string($con,$_POST["bericht"]);
$message = wordwrap($message, 70);
$to = "example@myemail.nl";
$subject = "Een gebruiker heeft een vraag of opmerking";
$body = "Some messages and colloring, to much to paste cause it's inline-markup";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: noreply@ajaxfailure.nl";
if ($name == ''){
echo '<p>U heeft geen naam ingevuld</p>';
}else if($from == ''){
echo '<p>U heeft geen emailadres achter gelaten</p>';
}else if($body == ''){
echo '<p>U heeft geen bericht ingevuld niet ingevuld';
}else {
if (mail ($to, $subject, $body, $headers)) {
echo '<p>Uw bericht is verzonden.</p>';
} else {
echo '<p>Er is iets mis gegaan bij het verzenden van de data, probeer het opnieuw.</p>';
}
}
$name=mysqli\u real\u escape\u字符串($con,$\u POST[“naam”]);
$from=mysqli\u real\u escape\u字符串($con,$\u POST[“email”]);
$message=mysqli\u real\u escape\u字符串($con,$\u POST[“bericht”]);
$message=wordwrap($message,70);
$to=”example@myemail.nl";
$subject=“Een gebruiker heeft Een vraag of opmerking”;
$body=“一些消息和colloring,由于它是内联标记,所以需要粘贴很多”;
$headers=“MIME版本:1.0”。“\r\n”;
$headers.=“内容类型:text/html;字符集=UTF-8”。“\r\n”;
$headers.=”来自:noreply@ajaxfailure.nl";
如果($name=''){
回音“U heeft geen naam ingevuld”;
}else if($from==''){
回音“U heeft geen emailadres achter gelten”;
}else if($body=''){
echo'U heeft geen bericht ingevuld niet ingevuld';
}否则{
if(邮件($to、$subject、$body、$headers)){
echo’Uw bericht是verzonden.;
}否则{
echo’Er是iets的数据管理系统,可能是opnieuw。;
}
}
每次它都从AJAX调用返回错误警报,并且不执行任何操作。我的控制台也没有发现错误,完全空白
我按照“网络”选项卡上的建议检查了控制台,它甚至没有出现在页面上。这部分没有404错误。看来请求被取消了
您的输入名称属性与您的php不匹配:
$name = mysqli_real_escape_string($con,$_POST["name"]); //<-- not 'naam'
$from = mysqli_real_escape_string($con,$_POST["email"]);
$message = mysqli_real_escape_string($con,$_POST["message"]); //<-- not 'bericht'
$name=mysqli\u real\u escape\u字符串($con,$\u POST[“name”])// 您的输入名称属性与php不匹配:
$name = mysqli_real_escape_string($con,$_POST["name"]); //<-- not 'naam'
$from = mysqli_real_escape_string($con,$_POST["email"]);
$message = mysqli_real_escape_string($con,$_POST["message"]); //<-- not 'bericht'
$name=mysqli\u real\u escape\u字符串($con,$\u POST[“name”])// 编辑此
$('#contact-form').bind('submit',function(){
ajax函数未绑定到元素。编辑此项
$('#contact-form').bind('submit',function(){
ajax函数没有绑定到元素。除了其他答案之外,我认为您不能在这一行中使用这个
:
data : $(this).serialize(),
尝试使用:
data : $('form').serialize(),
除了其他答案外,我认为你不能在这行中使用这个
:
data : $(this).serialize(),
尝试使用:
data : $('form').serialize(),
您的AJAX请求将被取消,因为在AJAX启动后,表单立即执行其标准表单提交,浏览器将重新加载页面。在提交事件中,您需要返回false或防止默认值:
$('form').bind('submit',function(){
...
...
return false;
});
或捕获事件并防止默认:
$('form').bind('submit',function(e){
e.preventDefault();
...
...
});
上述任何一项都将阻止表单提交,并允许您完成AJAX请求。您的AJAX请求将被取消,因为在AJAX启动后,您的表单立即进行标准表单提交,浏览器将重新加载页面。在提交事件中,您需要返回false或防止默认值:
$('form').bind('submit',function(){
...
...
return false;
});
或捕获事件并防止默认:
$('form').bind('submit',function(e){
e.preventDefault();
...
...
});
上述任何一项都将阻止表单提交,并允许您完成AJAX请求。始终使用开发人员工具调试代码。通过这种方式,您可以准确地看到它是如何发送的以及发送到哪里的。请使用Chrome开发工具。检查Chrome开发工具中的网络选项卡。请在做出我建议的更改后查看javascript控制台-它会给您错误信息。请求被取消,因为php错误可能与刷新有关(没有禁用按钮的默认状态),并且必须通过获取id而不是元素来重新绑定表单。我现在得到了正确的消息,只是还没有收到邮件,但这可能是在我的PHP中调试的问题。通过这种方式,您可以准确地看到它是如何发送的以及发送到哪里的。请使用Chrome开发工具。检查Chrome开发工具中的网络选项卡。请在做出我建议的更改后查看javascript控制台-它会给您错误信息。请求被取消,因为php错误可能与刷新有关(没有禁用按钮的默认状态),并且必须通过获取id而不是元素来重新绑定表单。我现在得到了正确的消息,只是还没有收到邮件,但这可能是在我的PHP中调试的问题。谢谢你指出这些。它还没有解决这个问题,但离它更近了一步。当你把荷兰语和英语混合在一起时,你会得到什么together@Dorvalla在错误函数中,将警报替换为console.log(error抛出)
并在js控制台中检查实际错误,然后使用结果编辑您的问题感谢您指出这些错误。它还没有解决这个问题,但离它更近了一步。当你把荷兰语和英语混合在一起时,你会得到什么together@Dorvalla在错误函数中,将警报替换为console.log(error抛出)
并在js控制台中检查实际错误,然后用结果编辑您的问题,实际上我通过表单禁用了按钮以阻止操作。我刚刚补充说,当你发布它是的,我实际上禁用了通过表单的按钮,以防止一个行动。我刚刚补充说,当你发布它时,我认为这是最后一次推动我与其他awnsers一起走上正确的方向。我不能接受所有答案,但至少我收到了发送消息,并且它连接到sendmail.php。我现在只需要调试一下它,就可以让它工作了。我想这是最后一次把我和其他Awnser一起推向正确的方向。我不能接受所有答案,但至少我收到了发送消息,并且它连接到sendmail.php。我现在只需要调试一下它就可以了