【发布时间】:2015-11-13 07:24:09
【问题描述】:
我有一个引导模式联系表单,它使用 AJAX 和 PHP 将用户发送的信息保存到数据库:
<div class="modal fade" id="contact" role="dialogue">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form id="myform" role="form">
<div class="form-group">
<label for="name">Name: </label>
<input type="name" name="name" class="form-control" id="name" >
</div>
<div class="form-group">
<label for="email">Email: </label>
<input type="email" name="email" class="form-control" id="email">
</div>
<div class="form-group">
<label for="msg">Message: </label>
<textarea class="form-control" name="msg" id="msg" rows="10"></textarea>
</div>
<!-- <a class="btn btn-primary" data-dismiss="modal">Close</a> -->
<button id="sub" type="submit" name="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>
</div>
</div>
当我提交表单时,页面提示 AJAX 请求失败但信息仍保存到数据库中!?任何人都知道我哪里出错了,我在下面附上了我的 script.js 和 send.php 文件:
Javascript/Ajax 文件:
$(document).ready(function(){
$('#myform').submit(function(){
$.ajax({
type: 'post',
url: 'send.php',
dataType: 'json',
async: true,
data: $('#myform').serialize(),
success: function(msg){
alert("It was a success");
return false;
},
error: function(jqXHR, textStatus, errorThrown){
alert("Fail");
console.log(jqXHR + '-' + textStatus + '-' + errorThrown);
return false;
}
});
});
});
用于处理和保存到数据库的 PHP 文件
<?php
include 'connect.php';
if(isset($_POST['name'])&&($_POST['email'])&&($_POST['msg']))
{
$sql = "INSERT INTO details (name, email, message) VALUES (:Name, :Email, :Msg)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':Name', $_POST['name'], PDO::PARAM_STR);
$stmt->bindParam(':Email', $_POST['email'], PDO::PARAM_STR);
$stmt->bindParam(':Msg', $_POST['msg'], PDO::PARAM_STR);
$stmt->execute();
echo "done";
}else{
echo "Nothing posted";
}
?>
P.S 没有错误输出到控制台,只是警告说失败。
【问题讨论】:
-
使用 Fiddler2 等工具或 Chrome F12 网络选项卡检查返回的实际响应。然后你可以看到服务器说什么
-
您的 ajax 数据类型是 json,尝试在您的 php 文件中编码您的 echo 语句。回声 json_encode('完成');和 echo json_encode('Nothing posted');
-
感谢所有评论的人。
标签: javascript php jquery ajax twitter-bootstrap