我测试了我的第一张AJAX表单,但是当我提交表单时,警报消息只显示了' 2'。我搜索将ajax数据发送到同一页面,我发现,我可以这样做,但URL是可选的。
我的PHP代码:
<html>
<body>
<form action="index.php" method="post">
<input name="name" type="text" />
<input type="submit" value="submit" name="submit">
</form>
<?php
if(isset($_POST["name"]))
{
$data="test string";
echo json_encode($data);
}
?>
<script src="jquery-2.1.0.min.js"></script>
<script src="ajax.js"></script>
</body>
</html>
我的AJAX代码:
$(document).ready(function() {
$('form').submit(function(event) {
$.ajax({
type : 'POST',
url : 'index.php',
data : $(this).serialize(),
dataType : 'json',
encode : true
})
.done(function(data) {
alert(1);
})
.fail(function(data) {
alert(2);
});
event.preventDefault();
});
});
我不知道哪里出错了?
答案 0 :(得分:1)
最好将页面生成和json响应生成委托给不同的页面。至少你应该将它隔离开来,因为页面的以下部分也最终出现在ajax-response中:
<html>
<body>
<form action="index.php" method="post">
<input name="name" type="text" />
<input type="submit" value="submit" name="submit">
</form>
...
<script src="jquery-2.1.0.min.js"></script>
<script src="ajax.js"></script>
</body>
</html>
修改你的脚本,你可以这样做:
<?
if(isset($_POST["name"]))
{
// And don't forget to specify content type!
header("Content-type: application/json");
$data="test string";
echo json_encode($data);
} else {
?>
<html>
<body>
<form action="index.php" method="post">
<input name="name" type="text" />
<input type="submit" value="submit" name="submit">
</form>
<script src="jquery-2.1.0.min.js"></script>
<script src="ajax.js"></script>
</body>
</html>
<? } ?>
并且,为了将来,请在您的问题中发布确切的请求和响应信息,例如,您可以在网络页面上获取chrome的开发人员工具。