0

因此,我一直无法解码从骨干网应用程序发送到服务器的有效 JSON 请求。无论我尝试什么,解码后的 $_POST 数据都返回 null。我戳了一下stackoverflow,找到了这个解决方案

$data = json_decode(file_get_contents('php://input'), true); 
print_r($data);

这似乎是一个 hack,所以我想知道是否有更好的方法来处理 PHP 中来自主干的 JSON 数据。在 PHP 中接收和解码从骨干网应用程序发送的 JSON 数据的正确方法是什么?

4

1 回答 1

1

您应该检查用于将数据发送到脚本的请求方法,如下所示:

switch ($_SERVER['REQUEST_METHOD'])
{
    case 'POST':
    {
      // do something
    }
    break;

    case 'GET':
    {
      // do something else
    }
    break;

    case 'PUT':
    {
      // your snippet goes here
    }
    break;

    case 'DELETE':
    {
      // do something when request method == DELETE
    }
    break;
}

您发布的代码是您在 REQUEST_METHOD 为 PUT 或 DELETE 时应该使用的代码。这根本不是黑客。

您还可以将 Backbone 配置为通过 POST 发送数据:

Backbone.emulateHTTP = true;

来自 Backbone 的手册:

如果您想使用不支持 Backbone 的默认 REST/HTTP 方法的旧版 Web 服务器,您可以选择打开 Backbone.emulateHTTP。设置此选项将使用 HTTP POST 伪造 PUT 和 DELETE 请求,使用 true 方法设置 X-HTTP-Method-Override 标头。如果 emulateJSON 也打开,则 true 方法将作为附加的 _method 参数传递。

于 2013-01-04T18:03:34.713 回答