通过ajax向POST发送POST时遇到问题。
服务器代码
<?php
echo file_get_contents('php://input');
print_r($_POST);
exit(0);
?>
ajax请求
var data = {key: 'value', __appversion: 0, __appos: 'Android'}
jQuery.ajax({
'url': the_url,
'method': 'POST',
'cache': false,
'dataType': 'json',
'data': data,
'error': function (xhr, status, error) {},
'success': function (data, status, xhr) {}
});
使用chrome的开发控制台模拟移动设备,请求如下
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,id;q=0.6,ms;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Content-Length:40
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host: xxxx-censored-xxxx
Origin:http://xxxx-censored-xxxx
Pragma:no-cache
Referer:http://xxxx-censored-xxxx
User-Agent:Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36
Form Data
key: value
__appversion: 0
__appos: Android
结果是(我知道json
部分)
os=Android__appversion=0&__appos=AndroidArray
(
[os] => Android__appversion=0
[__appos] => Android
)
问题是,
为什么提交给服务器的变量丢失了?与key
变量一样,__appversion
也缺失。
我期待print_r($_POST)
给予Array('key' => 'value', '__appversion' => 0, '__appos' => 'Android');
我在PHP上做错了什么? WebFaction上的PHP 7.0.20。谢谢。