用php获取ajax帖子

问题描述 投票:0回答:3

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

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

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

它输出以下内容。

javascript php jquery ajax post
3个回答
0
投票

为了工作和IMO,“最好”的方法是使用两个不同的文件。

  1. 您发出Ajax请求的一个文件(index.html / index.php)
  2. 一个文件(例如backend.php),其中发送回应

它不能用于一个文件的原因是因为PHP在发出请求之前运行(当呈现index.something文件时)。

由于您期望得到Ajax请求的即时反馈,因此您需要有一个成功函数,它可以对backend.php返回的数据执行某些操作。

流程如下:

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

例:

index.html ( first file )

<!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 ( second file )

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

-1
投票

它应该是:

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

代替

type: "POST"

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


-1
投票

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

<?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请求上运行。

© www.soinside.com 2019 - 2024. All rights reserved.