【问题标题】:Data is empty when passing a variable from JS to PHP with Ajax使用 Ajax 将变量从 JS 传递到 PHP 时数据为空
【发布时间】:2020-12-15 09:42:39
【问题描述】:

我正在尝试通过 onclick 事件传递一个简单的字符串变量,请求成功但我在控制台上得到一个空响应,并且 xvar 变量没有通过所以我得到“NO DATA” p 标签。这是我第一次使用 Ajax,所以我尝试让它变得非常简单。这是我的代码:

JS

    var xvar = 'D';
    $('.test').click( () => {
        $.ajax({
            data: { xvar : xvar },
            type: "POST",
            url: 'test.php', 
            success: function(data, textStatus, XMLHttpRequest)
            {
                console.log('Success: '+data)
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                console.log("The request failed."+errorThrown);
            }
        });
    });

test.PHP

$xvar = (isset($_POST['xvar'])) ? $_POST['xvar'] : '<p>NO DATA</p>';
echo $xvar;

我正在使用 Wordpress 中包含的 JQuery 3.5.1。如有任何反馈,我将不胜感激。

编辑 如所见,我设法在test.php 上得到了回复 here:

但是当我尝试用print_r 渲染值时没有显示。

$res = $_POST;
print_r($res);

【问题讨论】:

  • 我无法重现此问题。你能验证包含的 jQuery 的确切版本吗?您应该能够在页面源中看到它。旁注:当它与变量同名时,没有必要定义一个键。只需指定data: { xvar } 就足够了。
  • 你真的可以只定义data: { xvar },但不推荐这样做,因为在某些浏览器中这会导致“':' 预期错误”,例如 IE。
  • 这是 JQuery 1.12.4
  • 使用浏览器开发工具的网络选项卡查看 Ajax 请求及其原始响应。你看到了什么?
  • 我收到了来自 admin-ajax.php 的回复 {"wp-auth-check":true,"server_time":1608029785}。 test.php 中的“此请求没有可用数据”。

标签: javascript php jquery ajax wordpress


【解决方案1】:

在您的 Ajax 的 data 上,尝试在数据键中添加引号。像这样:

data: { "xvar" : xvar },

【讨论】:

  • 这应该不会影响结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
相关资源
最近更新 更多