2017-10-08 30 views
0

我正在向服务器发送ajax post请求,发布json数据。在firebug中,我可以看到网络邮政通话以及json数据。

在Laravel,我试图做一个简单的var转储的$_POST数据,并且浪费了一段时间,为什么这应该是完全空的混淆。但是,当我使用Request facade时,我的数据就在那里。

即。这只是给我一个空数组:

public function test(){ 
    Log::info($_POST); 
} 

...但这个打印我的数据,如我所料:

public function test(Request $request){ 
    Log::info($request->all()); 
} 

为什么?

编辑

谢谢,@Webdesigner。在HTTP动词肯定是post,我的方法是通过

​​

叫我的路线文件,我不认为$request->post()是Laravel 5.4有效,因为这会引发BadMethodCallException: Method post does not exist.错误。不过,我可以证实,

Log::info($request->method()); // POST

还告诉我的方法是岗位。

很奇怪。我想你是对的,应用程序的某些部分覆盖了$ _POST全球,但我不知道为什么/在哪里/如何。可能不相关,但这个电话是由Angular 4制作的。

感谢您的帮助!

+0

@developernator你错误地认为是我低估了你。 – Inigo

+0

@Webdesigner我正在使用Laravel 5。4 – Inigo

+0

您是否可以检查传送到您浏览器网络分析中的服务器的确切数据(HTTP标题,URL,POST,数据,Cookie等)? – Webdesigner

回答

0

这不是Laravel的正常行为。我在一个新鲜的Laravel 5.5站点上测试了这个,并且对同一个Route做了一个Form submit和一个Ajax POST请求。

两者都给了我相同的结果。一个POST请求应该至少有一个值为_token的CSRF令牌。

另一点是$request->all()不仅是$_POST的内容,所以要有一个公平的压缩,你应该尝试$request->post()

顺便说一句,因为你做了POST请求并不意味着数据是通过POST方法发送的,也可能是你在$request->all()看到的数据来自$ _GET和$ _COOKIE等,只有Method是a POST。

最后但并非最不重要的是,您的APP的某些部分正在删除Superglobal变量的内容。 $_POST和其他不像常量,所以它们可以在运行时更改,例如$_POST = [];

我不是说Laravel 5.4.27有什么区别。

+0

谢谢。请回答我的编辑问题。 – Inigo

相关问题