jQuery POST to PHP显示在浏览器中,但不显示在PHP文件中


jQuery POST to PHP appears in browser, but not the PHP file

我一直在为这个问题绞尽脑汁,我一定在这里搜索了50多个其他问题,但都没有结果。我正在尝试使用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中的表单中提取数据时,这将非常有效。

谢谢你的帮助,如果这是一个非常简单的问题,我提前道歉。我正在努力学习尽可能好的网络开发。我觉得我已经尝试了所有的方法,直到使用更长的.ajax方式发送POST变量,而不是使用.POST().

这是您的答案,您将测试是否存在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>

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

您需要的是在ajax请求对象中添加一个success回调,它将获得ajax请求的结果,并对其执行一些有用的操作,例如将其放入<div>元素中。下面的例子简单地显示它

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