我如何使用php中的post方法从json数组获得响应

时间:2017-03-02 07:52:55

标签: php arrays json post content-type

我从JSON数组获取响应时遇到错误。 这是PHP代码我试试这段代码。

db.collection.find({
  'createdAt': {
    $gte: new Date()
  },
  user_list: {$elemMatch: {id: 'b', some_flag: 1}} // will only be true if a unique item of the array fulfill both of the conditions.
}).sort({
  createdAt: 1
})

data data1;
    input ID Type Payment_Amt;
    cards;
    1 Voucher $50
    1 Cash $50
    1 Cash $20
    1 Card $20
    1 Card $50
;

var_dump($_POST);die;

这里也是空的邮递员结果。

enter image description here enter image description here

3 个答案:

答案 0 :(得分:2)

如果您的整个POST主体包含JSON,您可以使用这段代码获取它:

$json = file_get_contents('php://input');
$decoded = json_decode($json);

答案 1 :(得分:1)

试试这个: $postData = json_decode(file_get_contents("php://input"));

如果您只是发布一个好的旧HTML表单,请求看起来像这样:

POST /page.php HTTP/1.1

key1=value1&key2=value2&key3=value3

但是如果你正在使用Ajax,这个probaby还包括用类型(string,int,bool)和结构(数组,对象)交换更复杂的数据,所以在大多数情况下JSON是最好的选择。但是具有JSON-payload的请求看起来像这样:

POST /page.php HTTP/1.1

{"key1":"value1","key2":"value2","key3":"value3"}

现在内容将是application / json(或者至少不是上面提到的内容),所以PHP的$ _POST-wrapper不知道如何处理它(还)。

数据仍然存在,您无法通过包装器访问它。因此,您需要使用file_get_contents('php://input')以原始格式自行获取(只要它不是multipart/form-data-encoded)。

答案 2 :(得分:1)

你可以得到这样的价值:

$str = file_get_content("php://input");
$data = json_decode($str,true);

希望你能提供帮助。