【问题标题】:Why ajax doesn't send my JS variable to PHP?为什么 ajax 不将我的 JS 变量发送到 PHP?
【发布时间】:2022-01-24 03:48:07
【问题描述】:

我正在尝试将 JS 变量发送到 PHP 脚本(包含在我尝试使 ajax 工作的页面中)

index.php

include 'PHP/display.php';
<button id="click" onclick="show();">Click !</button>

<script>
  function show(){
    var str = "Yes";
    $.ajax({
      method : 'post',
      url : 'PHP/display.php',
      data: {
        str : str
      },
      success: function(data) {
        console.log(data);
      }
    });
  }
</script>

显示.php

<?php
  echo isset($_POST['str']) ? $_POST['str'] : "No";
?>

这一直显示“否”,但控制台显示我想要的“是”

这段代码是我第一次尝试使用 ajax,这就是为什么我尽量保持简单,但它不起作用。

我一直在 StackOverflow 上寻找几个小时,但没有一种解决方案适合我。

也许我错过了什么,请帮助我:(

【问题讨论】:

  • 使用 $_POST 而不是 $_REQUEST,因为使用 ajax,您将使用 POST 方法发送数据
  • 我想你的意思是使用$_POST
  • 该按钮是否在表单中?如果它在表单中,那么由于表单默认提交过程,页面可能会重新加载
  • 我用 POST 试过了,同样的问题,而且按钮不在表单中
  • 我认为你有一个误解,即通过包含同一个文件,ajax 发送的数据将在索引中可用。它不是那样工作的。每次运行文件时,它都希望将该数据作为输入。每个实例在运行时对最后一个实例一无所知

标签: javascript php html jquery ajax


【解决方案1】:

你可以看到ajax调用的url属性和phpinclude一样,但不同的是它会一直执行到你点击按钮为止。 PHP将能够接收到data的内容

您可以使用 jQuery 的 text 方法将对段落的调用的响应分配为文本。

function show() {
  var str = "Yes";
  $.ajax({
    method: 'post',
    url: 'display.php',
    data: {
      str: str
    },
    success: function(data) {
      $('#response').text(data);
    }
  });
}
<p id="response"></p>

display.php

<?php
echo isset($_POST['str']) ? $_POST['str'] : "No";

【讨论】:

  • 几个小时前我做了这样的事情,很好,但我不知道如何转换它以显示我用 ajax 从我的数据库发送的相同日期的事件(JS 变量)
  • 没关系,我明白了,而不是将我的 php 文件包含到我的 div 中(我想在其中显示我的东西)我只是把这个 div 的 id 放在 jquery 选择器中:$.(id ).text(data) 及其工作!我没有注意到 data 代表 php 脚本返回的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2012-12-30
  • 2011-10-03
相关资源
最近更新 更多