原生php获取post中raw值

  • Cxb
  • 2019-11-20
  • 44

最近公司项目用到原生php,以往都是用tp5或者是laravel接收post传过来的raw值然而这次php没有快捷方法获取,所有记录了下来。

首先js中要用$.post传过来的是一个多维的关联数组如图:

QQ图片20191120001541.png

我需要传过来的是这样的一个数组,首先我的前端是这样子写的~

var arr=[];
arr["data"]=[];
arr["tables"]=[];
arr["data"]["habh"]="4303664049";
arr["data"]["password"]="e10adc3949ba59abbe56e057f20f883e";
arr["data"]["quanxian"]="1";
arr["tables"]["table"]="mm_user";
arr["tables"]["key"]="id";
arr["tables"]["val"]="1";
arr["tables"]["varification"]="habh,password,quanxian";
$.ajax({
	    type: "POST",
	    url: "/conposer/test/from.php",
	    dataType:"json",
	    contentType: "application/json",
	    data:{arr:arr},
	    success: function(res) {
	    	console.log(res);
	    }
    });

然后php

<?php
var_dump($_POST);

起初我一直用PostMan测试没有任何问题,然后换回ajax没有却没有任何数据

原来是POST只能接收Content-Type: application/x-www-form-urlencoded提交的数据

解释:也就是表单POST过来的数据

而对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。

所有需要将php和js一起协调改动,改成为PostMan中raw的格式

var myArray = {"a":{"a":"a"},"b":"Belgrade", "c" : "Cairo" };
$.ajax({
	    type: "POST",
	    url: "/conposer/test/from.php",
	    dataType:"json",
	    contentType: "application/json",
	    data:JSON.stringify({arr:myArray}),
	    success: function(res) {
	    	console.log(res);
	    }
    });


然后php

$str=file_get_contents("php://input");
$data=json_decode($str,true);
echo "<pre >";
print_r($data);

这样才能收到正确的值。

不知道大家有没有发现我将我的js数组改成了js对象,原因是js多维关联数组js并不能正常输出,只能输出多维索引数组(可能是弱语言不能完好的支持吧)

QQ截图20191120004037.png

这个问题换乘js数组对象可以解决

分享到:
0

说点儿什么吧

未经允许不得转载:

原生php获取post中raw值

关于作者

头像

博客:爱一直在

博主:CXB

初心:技术和软文

简介:一个位90后站长,2016年入行,大学专业计算机应用(web前端),现从事php开发在物联网行业发展,一直潜心研究php和web前端技术,并写下相关软著三篇。希望利用博客和大家分享、学习IT技术知识以及记录我的个人点滴。我的性格乐天,自幼争强好胜,追求简单、喜欢学习、旅游、摄影、热爱生活、更爱敲代码。哈哈!!!

关于c69p|关于CXB|版权所有|湘ICP备17009938号