2011-10-05 57 views
1

我在寫一個Sencha Touch應用程序。我有一個FormPanel,它使用Request Payload將POST請求發送到服務器,如下所示。Sencha觸摸FormPanel中的HTTP請求負載

{ 
    "records": [ 
     { 
      "Id": 0, 
      "Picture": "", 
      "PostedOn": "Wed Oct 05 2011 16:06:28 GMT+0600 (QYZT)", 
      "OccurringOn": "Wed Oct 05 2011 16:06:28 GMT+0600 (QYZT)", 
      "Title": "Test", 
      "Organiser": "Umair", 
      "Details": "This is test." 
     } 
    ] 
} 

我該如何在服務器端獲取這些數據,假設它被髮布到Events.php?我目前嘗試$_POST["Title"]但它不工作。

+0

如何在events.php中傳遞這些數據? –

+0

您是否使用過Fiddler來捕獲請求?如果是這樣,請在這裏發佈。 –

+0

這是發送請求的Sencha Touch應用程序的FormPanel。我使用Chrome Firebug來查看請求並從那裏複製請求有效載荷。 – Neutralizer

回答

2

你必須閱讀raw post data(無論是打開的php://輸入流,或者$ HTTP_RAW_POST_DATA越來越如果它已啓用)

+0

你是天才的人!我收到了數據! – Neutralizer

0

什麼在events.php顯示print_r($_POST)

你可能需要做的:

$postvars=json_decode($_POST); // or $postvars=json_decode($_POST['records']); 
echo $postvars['records']['title']; // or echo $postvars['title']; 

或同級。我知道Sencha框架經常對已發佈的變量進行編碼(但通常不會默認爲AJAX)

+0

count($ _ POST)是0 – Neutralizer

+0

count($ _ REQUEST)也是0 – Neutralizer

+0

這是腳本在發送變量後返回的內容嗎?如果是這種情況,POST請求不會被創建。你確定表單被設置爲POST而不是GET嗎? – SW4

0

似乎您發送的是json數據,所以您應該在嘗試訪問變量之前使用json_decode()。

+0

count($ _ POST)是0 – Neutralizer

+0

count($ _ REQUEST)也是0 – Neutralizer

0

當您從客戶端發佈json數據時,它會通過content typeapplication/json發送請求。所以如果你dump $_POST什麼都不會顯示。您需要decodepost data使用json_decode($_POS['records'])。然後從解碼數組中訪問你的數據。

+0

'json_decode',根據文檔,返回:「...以適當的PHP類型在json中編碼的值。這是什麼情況看起來像一個對象。只要你正確地引用它就可以獲得你想要的數據。 – Peter

0

這裏是PHP代碼,你問:

<?php 
    $records = json_decode($_POST['records']); 
    $data = $records->Title 
?> 

一定要正確過濾通過POST雖然你用它做什麼之前,因爲它可以在發出之前被操縱發送任何東西。