2017-10-08 1968 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

相關問題