jQuery POST到PHP出现在浏览器中,但不出现在PHP文件中

时间:2016-04-08 19:57:28

标签: javascript php jquery ajax

我一直在解决这个问题,我必须在这里搜索其他五十多个问题,但无济于事。我正在尝试使用PHP,MariaDB,jQuery和其他Web开发技术对网站进行编码,但是我遇到了尝试将变量从客户端(使用jQuery)发布到服务器端(PHP)的问题。我创建了一个非常简单的文件,只是为了找出我遇到的问题:

<!DOCTYPE html>

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> 
        <script type="text/javascript" src="jquery.js"></script> 
</head>
<script type="text/javascript"> 
$(document).ready(function()
{
    $.ajax({
      type: "POST",
      url: "index.php",
      data: {'name': "name1"},
    });
});
</script>
<body>
<?php 
    if(isset($_POST["name"])){
        $i=$_POST["name"];
        echo "num: ".$i;
    }
    else{
        echo "No information supplied";
    }
?>
</body>
</html>

我刷新页面,并不断收到“无信息提供”的失败消息。我知道POST被发送到浏览器,因为我可以在Firebug中看到它,它的状态代码是200 OK,所以我知道我必须正确地做一些事情。我的PHP语法搞砸了吗?我知道当我从常规HTML中嵌入的表单中提取数据时,这将工作得很好。

感谢您的协助,如果这是一个非常简单的问题,我会提前道歉。我正在努力学习Web开发。我觉得我已经尝试了一切,使用更长的.ajax发送POST变量的方式,而不是使用.post()。

2 个答案:

答案 0 :(得分:2)

这是您的答案,您将测试是否有ajax请求,如果是,请处理它,如果没有吐出您的原始页面。至于ajax调用,我们正在添加一个成功的回调,然后用你的返回更新你的body标签。数据

<?php 
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
        if(isset($_POST["name"])){
            $i=$_POST["name"];
            echo "num: ".$i;
        }
        else{
            echo "No information supplied";
        }
        die;
    }
?>
<!DOCTYPE html>

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> 
        <script type="text/javascript" src="jquery.js"></script> 
</head>
<script type="text/javascript"> 
$(document).ready(function()
{
    $.ajax({
      type: "POST",
      url: "index.php",
      data: {'name': "name1"},
      success: function(data){
          $('body').html(data);
      }
    });
});
</script>
<body>
this is the original body content
</body>
</html>

答案 1 :(得分:0)

您的PHP代码在触发ajax请求之前运行,因为服务器在您在浏览器中查看生成的HTML之前解释并运行PHP

你需要的是在ajax请求对象中添加一个success回调,它将获得ajax请求的结果,并对它做一些有用的事情,例如将它放入<div>元素。以下示例只显示

$.ajax({
  type: "POST",
  url: "index.php",
  data: {'name': "name1"},
  success: function(serverReponse){ alert(serverResponse) }
});