没有收到AJAX请求中的数据

时间:2014-06-08 16:04:03

标签: php jquery html ajax

我测试了我的第一张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();

});


});

我不知道哪里出错了?

1 个答案:

答案 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的开发人员工具。