$ _POST中未定义的索引

时间:2017-09-23 17:20:01

标签: php api http-post postman

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

PHP脚本

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

邮差中的原始输入

{"result":"sfd"}

输出

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

这里发生了什么?

3 个答案:

答案 0 :(得分:1)

你在arrey中获得了一个JSON字符串,它首先必须被解码才能被访问

喜欢

as Array

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

as Object

$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,
    ...
});

答案 1 :(得分:0)

答案是json格式,您需要对其进行解码才能访问此索引。

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

答案 2 :(得分:-1)

使用isset功能检查

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