PHP接收前端传值各种情况整理
PHP接收前端传值各种情况整理
服务端代码:
header('Access-Control-Allow-Origin:*'); var_dump($_POST); exit;
情况
1) 传null
$.post('http://xxxxx.xx/index.php', { "test": null }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(0) "" }
2) 传''
代码:
$.post('http://xxxxx.xx/index.php', { "test": '' }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(0) "" }
3) 传'[]'
$.post('http://xxxxx.xx/index.php', { "test": '[]' }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(2) "[]" }
4) 传[]
$.post('http://xxxxx.xx/index.php', { "test": [] }, function(data, status) { console.log(data); });
结果:
array(0) { }
5) 传2个[]
$.post('http://xxxxx.xx/index.php', { "test": [], "test2": [] }, function(data, status) { console.log(data); });
结果:
array(0) { }
6) 传{}
$.post('http://xxxxx.xx/index.php', { "test": {} }, function(data, status) { console.log(data); });
结果:
array(0) { }
7) 传2个{}
$.post('http://xxxxx.xx/index.php', { "test": {}, "test2": {} }, function(data, status) { console.log(data); });
结果:
array(0) { }
8) 传1个{}加1个非空对象
$.post('http://xxxxx.xx/index.php', { "test": {}, "test2": {"a": 1} }, function(data, status) { console.log(data); });
结果:
array(1) { ["test2"]=> array(1) { ["a"]=> string(1) "1" } }
9) 传[{}]
$.post('http://xxxxx.xx/index.php', { "test": [{}] }, function(data, status) { console.log(data); });
结果:
array(0) { }
10) 传[[{}]]
$.post('http://xxxxx.xx/index.php', { "test": [[{}]] }, function(data, status) { console.log(data); });
结果:
array(0) { }
11) 传'nil'
$.post('http://xxxxx.xx/index.php', { "test": 'nil' }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(3) "nil" }
12) 传0
$.post('http://xxxxx.xx/index.php', { "test": 0 }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(1) "0" }
13) 传'null'
$.post('http://xxxxx.xx/index.php', { "test": 'null' }, function(data, status) { console.log(data); });
结果:
array(1) { ["test"]=> string(4) "null" }
用抓包工具发现
- http请求里面并不会发送
"无效的"
字段——[]和{},所以不是PHP丢弃了,而是没收到; - 当传的值是js里的
null
,会转换成空字符串,http请求里面是test=
,所以PHP接收到的test是个空字符串; - http协议不能表示值是什么类型,所以PHP只能什么都当做string
总结:
- PHP对于接收到的每一个值,会转换成字符串变量
- PHP对于接收到的,之所有会接收不到是因为被一系列规则过滤掉了
以上结论是在jQ和PHP7之下验证的,其他环境不一定保证正确,之后可以试验使用CURL发送数据试试。
TODO:
- [ ] 用CURL发送POST测试
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
利用神器BTrace 追踪线上 Spring Boot应用运行时信息
概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比如 接口方法参数/返回值、外部调用情况 以及 函数执行时间等信息以便定位问题。传统的日志记录方式的确可以,但有时非常麻烦,甚至可能需要重启服务,因此代价太大,这时可以借助一个牛批的工具:BTrace ! BTrace 可用于动态跟踪正在运行的 Java程序,其原理是通过动态地检测目标应用程序的类并注入跟踪代码 ( “字节码跟踪” ),因此可以直接用于监控和追踪线上问题而无需修改业务代码并重启应用程序。 BTrace 的使用方式是用户自己编写符合 BTrace使用语法的脚本,并结合btrace命令,来获取应用的一切调用信息,就像下面这样: <btrace>/bin/btrace <PID> <trace_script> 其中 <PID>为被监控 Java应用的 进程ID <trace_script> 为 根据需要监控的信息 而自行编写的 Java脚本 本文就来实操一波 BTrace工具的使用,实验环境如下: O...
- 下一篇
漫画:奇怪,为什么在Java中 2*(i*i) 比 2*i*i 快?
既然我设计的两只小萌宠出场了,也该它们的粑粑出场了,有同学估计最近有点疑问,东哥为什么很长一段时间不输出原创文章了,难道不准备写下去了吗?我可是东哥的忠实读者呢! 东哥在这里告诉各位读者大大,东哥一定会写下去,除非真的有一天写不动了为止,东哥一直对技术痴迷,所以公众号还是会以技术文输出为主。 今天这篇文章,我们通过一个故事来深入聊聊 Java 编译背后的秘密。 东哥说这段代码来自于 Stackoverflow(关于这个网站,东哥似乎分享了无数次《这三个网站的使用技巧,你值得收藏》,真正去逛这个网站的同学还是很少),如下。 public static void main(String[] args) { long startTime = System.nanoTime(); int n = 0; for (int i = 0; i < 1000000000; i++) { n += 2 * i * i; } System.out.println((double) (System.nanoTime() - startTime) / 1000000000 + " s"); System...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16