2011-10-05 55 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虽然你用它做什么之前,因为它可以在发出之前被操纵发送任何东西。