Sencha Touch FormPanel中的HTTP请求有效负载

时间:2011-10-05 10:12:22

标签: php http post request extjs

我正在写一个Sencha Touch应用程序。我有一个FormPanel,它向请求有效负载的服务器发送POST请求,如下所示。

{
    "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"],但它无效。

5 个答案:

答案 0 :(得分:2)

您必须阅读raw post data(打开php://输入流或从$ HTTP_RAW_POST_DATA获取,如果已启用)

答案 1 :(得分: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默认)

答案 2 :(得分:0)

好像你正在发送json数据,所以你应该在尝试访问变量之前使用json_decode()。

答案 3 :(得分:0)

当您从客户端发布json数据时,它会使用content type application/json发送请求。如果你dump $_POST,那么什么都不会显示出来。您需要使用decode post data json_decode($_POS['records'])。然后从解码数组中访问您的数据。

答案 4 :(得分:0)

以下是您要求的PHP代码:

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

在使用POST之前,请务必正确清理通过{{1}}发送的任何内容,因为它可以在发送之前进行操作。