【问题标题】:Stuck on undefined index in PHP卡在 PHP 中未定义的索引上
【发布时间】:2026-01-04 04:20:05
【问题描述】:

我已经被这个问题困扰了好几天了......似乎无法弄清楚为什么我不断收到此代码的未定义索引错误,为什么 $text 不会回显任何内容?

$http({
  url: url, url2,
  method: "POST",
  data: "data=" + window.btoa(encodeURIComponent(jsonData)),
  headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (id, status, headers, config) {
  console.log(data);
  $scope.message = "From PHP file : "+data;

PHP:

$data = file_get_contents(json_decode(urldecode(base64_decode($_POST["data"]))));
$text = $data->text;

【问题讨论】:

  • var_dump 或 print_r 您得到未定义索引错误的变量,然后找出您希望设置的键未设置的原因。

标签: javascript php angularjs ajax


【解决方案1】:

这有很多错误,很难弄清楚从哪里开始。首先,为什么要使用base64编码uri编码json编码?

接下来,如果您要使用所有这些编码函数,则需要以完全相反的顺序调用完全等效的解码函数。这不是现在发生的。

接下来,url2 在这里什么也不做。

然后,file_get_contents 需要一个路径作为它的参数,而不是一个字符串。 file_get_contents 字面意思是用来获取文件的内容,所以在这里没有任何意义。另外file_get_contents 返回一个字符串,所以它永远不会有->data 成员。

最后一个未定义的索引意味着$_POST 对象中没有data 值。这可能是因为您没有将数据作为表单数据发送。默认情况下,Angular 会将数据编码为 json,这意味着从 PHP 的角度来看,$_POST 将为空,您只能通过php://input 获取数据。

所有这些都告诉我,您基本上将一大堆来自不同来源的东西拼凑在一起,希望它能够在某一时刻奏效。我可以给你的一个建议不仅仅是阅读我的答案,而是花时间学习你正在使用的东西。你不会通过猜测来解决你的问题。

还学习如何调试。您得到的错误是关于数组中不存在的项目。您可以通过查看$_POST 的全部内容来验证这一点。那时你可能还不知道为什么会出错,但是你问的是这个错误而不是 $_POST 不包含 data 的事实告诉我,即使访问数组中的数据对你来说仍然是陌生的。

【讨论】:

  • 是的,我是编程新手,并试图将不同的代码组合在一起。我会听取你的一些建议并学得更好。感谢您的帮助,是的 $_POST 不检索数据,所以我将尝试使用“php://input”
【解决方案2】:

我在 Angular 方面的经验有限,但“url2”值对我来说似乎不合适:

$http({  
    url: url, url2,  

【讨论】:

    最近更新 更多