- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在这里阅读了一些关于该主题的问题,但找不到我正在寻找的答案。我正在用 jQuery 将一些 $.post 发送到 PHP5.6 服务器。
$.post('/', {a:100, b:'test'}, function(data){
}, 'json');
控制台的编码是
Content-Type application/x-www-form-urlencoded; charset=UTF-8
如果我尝试使用常规 $_POST 读取 POST 数据,PHP5.6 会提醒我
PHP Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead
然后我尝试了这个建议,在 php.ini 中添加了 always_populate_raw_post_data = -1 和
json_decode(file_get_contents("php://input"));
PHP5.6 提醒我它是无效的
PHP Warning: First parameter must either be an object or the name of an existing class
所以我转储了 file_get_contents("php://input") 并且它是一个字符串。
a=100&b="test"
所以我已经解析了字符串并编码然后解码
parse_str(file_get_contents("php://input"), $data);
$data = json_decode(json_encode($data));
var_dump($data);
然后我终于将我的 $data 作为一个对象而不是数组,作为一个真正的 JSON 对象。
我现在继续使用 $_POST...但是后来我想知道升级 PHP...
这里的问题是,是否有更直接的解决方案,或者是否意味着使用 file_get_contents("php://input") 也意味着进行解析解码编码恶作剧?
编辑: 所以看起来这在多级 json 上不起作用。请考虑以下事项:
{"a":100, "b":{"c":"test"}}
在 Ajax/Post 中发送
{a:100, b:{c:"test"}}
做
parse_str(file_get_contents("php://input"), $post);
var_dump($post);
会输出
array(2) {
["a"]=>string(8) "100"
["b"]=>string(16) "{"c":"test"}"
}
或者做(按照建议)
parse_str(file_get_contents("php://input"), $post);
$post= (object)$post;
会输出
object(stdClass)#11 (2) {
["a"]=>string(8) "100"
["b"]=>string(16) "{"c":"test"}"
如何在不使用递归函数的情况下将 file_get_contents("php://input") 转换为具有相同“架构”的真实对象?
Edit2:我的错误,建议奏效了,我在注释中被 JSON.stringify 旁路了,这导致了错误。底线:它适用于 json_decode(json_encode($post)) 或 $post=(object)$post;
回顾一下,使用 jQuery $.post :
$.post('/', {a:100, b:{c:'test'}}, function(data){
}, 'json');
parse_str(file_get_contents("php://input"), $data);
$data = json_decode(json_encode($data));
或
parse_str(file_get_contents("php://input"), $data);
$data= (object)$data;
无需使用 JSON.stringify
最佳答案
在请求的 POST 正文中接收序列化/urlencoded POST 数据,您已经使用 parse_str()
将其正确转换为数组。
但是,编码然后解码 JSON 以将其转换为您正在寻找的对象(与数组相对)的步骤是不必要的。相反,PHP 会愉快地将关联数组转换为 stdClass
类的对象:
parse_str(file_get_contents("php://input"), $data);
// Cast it to an object
$data = (object)$data;
var_dump($data);
关于javascript - 文件获取内容 ('php://input' );使用 application/x-www-form-urlencoded;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937775/
我正在使用 nginx on Rackspace cloud following a tutorial并且已经搜索了网络,但到目前为止无法对此进行排序。 出于 SEO 和其他原因,我希望 www.my
我到处搜索并尝试了各种 .htaccess 配置,但没有找到答案。 只访问 .htaccess 文件我想: 将 NON www 定向到 NON www SSL示例:http://example.com
下面的 htaccess 命令将所有非 www 转移到 http www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^
我希望重定向所有内容: http:// http://www. https://www. to https:// 这可能已经在这里得到了回答,但是在浏览了看起来相关的问题后,它们都不完全是我想要的,并
我有一个全新的网站,最初是 http://然后我将网站重定向到 http://www它的工作就像一个魅力,但自从我安装了 SSL 我有两个版本的网站 http://www.example.com和 h
我必须将我的网站从 https://www.example.com/ 重定向到 https://website.com/。 SSL 已正确安装在我的服务器上。 我正在使用 Apache 并且必须使用
我有一个 SEO 人员让我很困惑。他提到在 Google 网站管理员工具中,我应该验证网站的 www 版本以及非 www(非 www 已经验证)。所以我告诉他没有必要,因为出于规范原因(如 Matt
-- 请参阅下面的 Tl;dr 以获得简短版本-- 在我的 ubuntu-16.04 droplet apache2 和 php7 上都使用用户 www-data。在某些时候,所有三个 wordpre
Tumblr 的文档 ' Using a custom domain name ' 非常有帮助,它清楚地说明我需要创建一个 A唱片为 example.com指向 66.6.44.4 ,以便我的网站可以
我有一个托管在谷歌云存储桶上的静态网站。 在我的存储桶前面,我有 cloudflare dns。 存储桶是 example.com Cloudflare 设置:CNAME > @ > c.storag
我正在使用以下代码编写 www 到非 www 重定向: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
我的一个 friend 目前正在修补 JpCap在 Java 中,我们发现了一些关于 Java 正则表达式的有趣(也许?)问题。 只有 HTTP 流量被捕获并随后进行分析。为此,他使用了如下模式: P
我目前在 htaccess 文件中使用以下代码,将我的服务器中托管的网站的所有非 www 网址重定向到 www 网址。 RewriteCond %{HTTP_HOST} !^www\. Rewrite
我有一个 wordpress 网站 www.domain.com,我们刚刚购买了一个 SSL 证书,但它只适用于 domain.com(没有 www)。我配置了 .htaccess 和站点 url R
我的 Apache 服务器上的虚拟主机中有以下内容, Redirect permanent / https://domain.com Options
我正在尝试将所有流量从 HTTP 站点重定向到 HTTPS 站点,并将所有 www 流量重定向到非 www 站点。我的设置包括 HTTP 站点的 nginx.conf 文件,我已将 301 重定向规则
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 12 年前。 Improve thi
我有一个域说 http://www.testexample.com .当我登录 http://www.testexample.com然后回到http://testexample.com在浏览器中;登录
我正在为我的 Web 应用程序使用 EC2 实例。我买了一个新的 SSL 并将其安装在 AWS 经典负载均衡器上,我的 SSL 工作正常。但从 SEO 的角度来看,我想将所有请求从 www 和非 ww
这是否受跨源策略限制? 最佳答案 你不能。您只能向 www.foo.com 发送请求。 关于javascript - 在页面 'www.foo.com' 上,从 'www.example.com' 加
我是一名优秀的程序员,十分优秀!