为啥 ajax 不将我的 JS 变量发送到 PHP?

Posted

技术标签:

【中文标题】为啥 ajax 不将我的 JS 变量发送到 PHP?【英文标题】: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,这就是为什么我尽量保持简单,但它不起作用。

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

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

【问题讨论】:

使用 $_POST 而不是 $_REQUEST,因为使用 ajax,您将使用 POST 方法发送数据 我想你的意思是使用$_POST 该按钮是否在表单中?如果它在表单中,那么由于表单默认提交过程,页面可能会重新加载 我用 POST 试过了,同样的问题,而且按钮不在表单中 我认为你有一个误解,即通过包含同一个文件,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 脚本返回的内容

以上是关于为啥 ajax 不将我的 JS 变量发送到 PHP?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Ajax 不将数组作为数据对象发送

为啥我的 php 没有将我的联系表单输入发送到我的电子邮件?

为啥 Django 不将我的 unique_together 约束强制为 form.ValidationError 而不是抛出异常?

js提交不起作用不将表单数据发送到php

为啥我的 .htaccess 仅针对 https / ssl 不将 uri 路径重定向到 index.php?

使用 AJAX 和 jQuery 验证 From 而不将数据发送到另一个文件