我有Ajax POST请求。它总是返回200 OK但我没有得到我希望的。我知道有一个json问题,但我无法解决这个问题。这是我的代码:
<script type="text/javascript" src="../js/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("form#formreg").submit(function(){
if (confirm("Are You Sure Want To Save ?")){
$.ajax({
url: "save.php",
type:"post",
contentType: 'application/json; charset=utf-8',
data:$( ":input" ).serialize(),
dataType: "json",
success:function(response){
if(response.status == 1)
{
alert("Save OK !");
}
else
{
alert("Fail To Save!");
}
},
error: function(xhr){
alert("An error occurred: " + xhr.status + " " + xhr.statusText);
}
});
}
return false;
});
});
</script>
<form method="post" name="formreg" action="" id="formreg">
<table>
<tr>
<td>Name</td>
<td><input type="text" id="name" name="name" required="required" size="50" maxlength="50" /></td>
</tr>
</table>
<input type="submit" id="submit" value="Save"/>
</form>
save.php
<?php
include_once("connect.php");
$name = $_POST['name'];
mysql_query("INSERT INTO visitor(name) VALUES('$name')") or die ("Fail To Add !");
echo '{"status":"1"}';
?>
什么是错误的代码,所以我的脚本不起作用,你能帮帮我吗?
答案 0 :(得分:2)
问题在于:
$name = $_POST['$name'];
将$name
替换为name
,因为表单中的标识符为“name”。由于您将一个错误的变量传递给查询,因此您的PHP会死亡并返回200的状态,但是之前已经死掉了您的JSON字符串,这就是为什么永远不会返回JSON的原因。 / p>