【发布时间】:2014-07-12 05:50:10
【问题描述】:
我正在使用 Phalcon 开发一个 API。我正处于试错阶段,正在学习 Phalcon 和使用此框架构建 REST API 的正确方法。
我的问题是,当通过 jQuery 对我的 API 进行 ajax 调用时,类型为:“GET”Phalcon 无法使用 getJsonRawBody 解析请求。当我通过 jQuery 使用 type: "POST" 运行相同的 ajax 调用时,它可以工作。
这是我的 ajax 请求。
$('.start').click(function() {
var arr = {timestamp:'<?=time();?>'};
$.ajax({
type: "GET",
beforeSend: function (request)
{
request.setRequestHeader("X-Api-Key", "<?=$api_key;?>");
request.setRequestHeader("X-Hash", "<?=$hash;?>");
},
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
url: "http://api-dev.fancompetition.com/my-rest-api/api/robots/",
})
.done(function(data) {
$('#data').html(data);
});
});
在服务器端我有:
$vars = $app->request->getJsonRawBody();
所以现在如果您将类型更改为 POST,我可以获取内容。当类型为 GET 时,我的变量 vars 为空白。知道为什么吗?
【问题讨论】:
-
得到了答案。基本上 GET 请求通常没有消息体。在 url 中作为参数传递并在服务器端正确捕获。