【问题标题】:Why AJAX POST results in an Undefined array key error?为什么 AJAX POST 会导致未定义的数组键错误?
【发布时间】:2022-11-16 21:33:17
【问题描述】:

我正在尝试使用 AJAX 将文本字符串传递给 PHP 变量,但在 POST 触发时我不断收到此错误:

警告:未定义的数组键“mydata”

警报触发并正确显示值,但随后 PHP 页面显示上述错误。这里出了什么问题?

阿贾克斯:

$("#display_tasks").click(function() {
    var name = $(this).text();
    var namecut = name.substr(0,name.indexOf(' |'));
    $.ajax({
         type: 'POST',
         url: 'opentask.php',
         data: {mydata : namecut},
         success:function(data) {
             alert(data);
         }
    });
});

PHP:

$taskname = $_POST['mydata'];
echo $taskname;

【问题讨论】:

  • 就在调试时,让数据捕获变得简单,只做var namecut = 'HELLO';,看看你是否得到任何回报
  • 谢谢您的答复。我实际上在发布之前进行了调试,namecut 返回预期值没有问题并且也很好地提醒它,成功警报也正确显示文本,但是当 PHP 触发时它会导致 php 页面上出现错误
  • @KenLee 错误消失了,但没有返回任何内容,只有空白页。我假设帖子没有正确读取值?这是为什么?
  • 如果您向 PHP 发送一个字符串并且 PHP 向 JS 返回正确的字符串并且 alert(data); 显示正确的字符串。那么你从 PHP 得到错误的事实并没有计算
  • @RiggsFolly 我有其他 PHP 文件可以从中检索文本,但是当我尝试将文本发送到其他 PHP 文件时,它会通过 JS 正确提醒该值,但是 PHP 无法回显该值,因为 POST 中的错误先于它.这是我对事情进展的看法。如果你能指导我到我可能错的地方,我将不胜感激。

标签: php jquery ajax post


【解决方案1】:

您一直在使用 $_POST['mydata'],而不仅仅是在接收 AJAX 请求时。而当您只是显示页面时,超全局数组 $_POST 还没有一个由“mydata”索引的元素。这就是你得到错误的原因。

避免这种情况的一种方法是将 AJAX 接收请求分离到另一个文件。这就像由几个 PHP 应用程序完成的一样。

一个更简单的测试方法是检查 $_POST,例如你可以这样做:

if (!empty($_POST)) {
    $taskname = $_POST['mydata'];
    echo $taskname;
}

这样,当您收到 POST 时,您只会尝试使用 $_POST['mydata]`。此外,如果元素“mydata”不存在,您仍然会收到未定义的数组键错误。

【讨论】:

  • 您好,感谢您的回复。我试过了,但它只返回空白的白页,没有错误。这意味着 POST 是空的,但是 AJAX 传值时为什么它是空的呢?
【解决方案2】:

替换var name = $(this).text();

var name= $(this).attr('value'); 或者 document.getElementById('name').value

name 是文本输入名称 我认为这将起作用并测试它是否首先通过 console.log(name) 获得

【讨论】:

  • 不幸的是它没有用,同样的错误。我认为该错误与 POST 有关,该值使用 .text() 读取正确,我对其进行了调试并且运行良好。感谢您提出的想法
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2016-07-18
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
相关资源
最近更新 更多