我正在使用邮递员将数据发布到非常小的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
这里发生了什么?
答案 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'];
}
?>