簡體   English   中英

使用PHP獲取Ajax帖子

[英]Get ajax post with php

我不明白為什么這行不通。

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

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

它輸出以下內容。

圖片標題

帶標題的圖片

為此,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.";
?>

它應該是:

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

代替

type: "POST"

如此處所示: http : //api.jquery.com/jquery.ajax/

試試這個作為基本測試...

<?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請求時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM