【问题标题】:Undefined index in $_POST$_POST 中未定义的索引
【发布时间】:2018-03-05 01:40:56
【问题描述】:

我正在使用邮递员将数据发布到非常小的 php 脚本中。当我尝试转储 $_POST 时,它有一些数据,但是当我尝试访问 $_POST 中的变量时它给了我错误。

PHP 脚本

<?php
  header("Access-Control-Allow-Origin: *");
  var_dump($_POST);
  $txt = $_POST['result'];
 ?>

Postman 中的原始输入

{"result":"sfd"}

输出

array(1) { ["{"result":"sfd"} "]=> string(0) "" } 
Notice: Undefined index: result in C:\xampp\htdocs\apis\index.php on line 4

这里发生了什么?

【问题讨论】:

  • 好像您从 PostMan 发送了错误的数据。 var_dump($_POST); - 像关联数组,键为"{"result":"sfd"} ",值为空字符串。

标签: php api http-post postman


【解决方案1】:

使用isset功能检查

<?php
    header("Access-Control-Allow-Origin: *");
    if(isset($_POST['result'])){
        $txt = $_POST['result'];
    }
 ?>

【讨论】:

    【解决方案2】:

    答案是json格式,需要解码才能访问这个索引。

    <?php
      header("Access-Control-Allow-Origin: *");
      var_dump($_POST);
      $result = json_decode($_POST, true)
      $txt = $result['result'];
    ?>
    

    【讨论】:

      【解决方案3】:

      你在 arrey 中得到一个 JSON 字符串,它不能像那样访问,首先你必须对其进行解码

      喜欢

      作为数组

      $result = json_decode($_POST, true)
      $txt = $result['result']; // text
      

      作为对象

      $result = json_decode($_POST)
      $txt = $result->result; // text
      


      建议

      如果您通过 jQuery ajax 提出请求,我认为您正在使用 JSON.stringify() 或类似的方法来转换为字符串,所以不要使用 JSON.stringify() 直接发布。所以在这种情况下你不需要使用json_decode()

      例如

      var data = {"result":"sfd"};
      
      // data = JSON.stringify(data); // don't use this
      
      $.ajax({
          url : url,
          data : data,
          ...
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-30
        • 2012-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多