【问题标题】:Get ajax post with php使用 php 获取 ajax 帖子
【发布时间】:2018-10-06 19:16:25
【问题描述】:

我不明白为什么这不起作用。

$.ajax({
  type: "POST",
  url: 'test.php',
  data: {name: 'Wayne', age: 27},
});

echo $_POST['name']; echo $_POST['age'];

它输出以下内容。

【问题讨论】:

  • 我们需要您的test.php文件中的更多信息、屏幕截图或代码
  • Ajax 在客户端运行并且是异步的...... PHP 在页面显示在客户端并发出请求之前无法获得 POST 值。
  • 我给你看了我用过的所有代码
  • 您甚至不使用请求结果...查找使用 success 回调的示例。你有更多关于 ajax 的阅读...我建议你 this
  • 我想用php获取post数据,用javascript取得的成功对我有什么帮助?如图所示,有来自 ajax 的响应

标签: javascript php jquery ajax post


【解决方案1】:

为此,IMO 的“最佳”方法是使用两个不同的文件。

  1. 一个文件 ( index.html / index.php ) 从您发出 Ajax 请求的位置和
  2. 发回响应的一个文件(例如 backend.php)

它不能与一个文件一起工作的原因,是因为 PHP 是在发出请求之前运行的(当 index.something 文件被渲染时)。

由于您希望从 Ajax 请求中立即得到反馈,因此您需要一个成功函数来处理从 backend.php 返回的数据。

流程是这样的:

  1. index.html 向 backend.php 发出请求并等待响应
  2. 后端响应
  3. index.html 在成功函数中接收到 backend.php 响应

示例:

index.html(第一个文件)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Hello World</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="main.js"></script>
    <script>
        function $ajaxReq() {
            $.ajax({
                method: "POST",
                url: "backend.php",
                data: {
                    name: "John",
                    age: 23
                },
                success: function(data) {
                    alert(data)
                }
            })
        }
    </script>
</head>
<body>
    <button onclick="$ajaxReq()">Click me</button>
</body>
</html>

backend.php(第二个文件)

<?php
    $name = $_POST["name"];
    $age = $_POST["age"];
    echo "Hello, my name is " . $name . " and I am " . $age . " years old.";
?>

【讨论】:

  • 如果这就是您要找的,请告诉我。
【解决方案2】:

应该是:

$.ajax({
 method: "POST",
 url: 'test.php',
 data: {name: 'Wayne', age: 27},
})

而不是

type: "POST"

如图所示:http://api.jquery.com/jquery.ajax/

【讨论】:

【解决方案3】:

试试这个作为基本测试...

<?php
if($_POST){
  echo $_POST['name']."<br>";

  if($_POST['age']<21){
    echo "Too young to log in!";
  }else{
    echo $_POST['age']." years old is ok!";
  }

}else{
  echo "No post values yet.";
  ?>
  <div id="result"></div>

  <script>
  $.ajax({
    method: "POST",
    url: 'test.php',
    data: {name: 'Wayne', age: 19},
    success: function(response){
      $("#result").html("I'm the Ajax result!<br><br>"+response);
    }
  });
  </script>
  <?php
}
?>

您应该注意到 PHP 在这里运行了两次……在加载时,然后在 Ajax 请求时。

【讨论】:

  • 它显示:还没有发布值。
  • 抱歉...我错过了("#result").html(...) 中的# -- 重试。
  • 输出数据并无限次重新加载页面
  • 大声笑......当然......通常,您将从页面 A 运行 Ajax 以从资源 B 获取一些内容。这个答案只是关于 Ajax 隐含时间(毫秒)的示例.
  • Ahhhh 在对您的代码进行了一些测试之后,我现在明白您的意思了。我对存储数据更感兴趣,我将尝试使用 $_SESSION。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 2015-01-05
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2018-04-25
  • 2016-06-01
  • 1970-01-01
相关资源
最近更新 更多