Slim PUT返回NULL

我有Slim Framework和PUT请求的问题。 我有一个简单的jQuery脚本,它会在单击按钮时更新到期时间。

$("#expiry-button").click(function(event) { event.preventDefault(); $.ajax({ url: 'http://www.domain.com/expiry/38/', dataType: 'json', type: 'PUT', contentType: 'application/json', data: {aid:'38'}, success: function(){ var text = "Time updated"; $('#expiry').text(text).addClass("ok"); }, error: function(data) { var text = "Something went wrong!"; $('#expiry').text(text).addClass("error"); } }); }); 

我总是得到“出错了!”

在我配置了Slim的index.php中,我有这个

 $app->put('/expiry/:aid/', function($aid) use($app, $adverts) { $id = $app->request()->put($aid); $adverts->expand_ad_time($id["aid"]); }); 

如果我var_dump($id)我得到NULL

响应标头如下所示:

 Status Code: 200 Pragma: no-cache Date: Wed, 08 May 2013 12:04:16 GMT Content-Encoding: gzip Server: Apache/2.2.16 (Debian) X-Powered-By: PHP/5.3.3-7+squeeze15 Vary: Accept-Encoding Content-Type: text/html; charset=utf-8 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Transfer-Encoding: chunked Connection: Keep-Alive Keep-Alive: timeout=15, max=100 Expires: Thu, 19 Nov 1981 08:52:00 GMT 

和请求机构

 Request Url: http://www.domain.com/expiry/38/ Request Method: PUT Status Code: 200 Params: { "aid": "38" } 

所以沟通就在那里,但不是理想的结果。 我究竟做错了什么?

首先你应该检查json数据,因为它无效: http : //jsonlint.com/试试这个:{“aid”:“38”}

如果您需要JSON数据而不是我会这样做:

 $app->put('/expiry/:aid/', function($aid) use($app, $adverts) { // Decode the request data $test = json_decode($app->getInstance()->request()->getBody()); echo $test->aid; // from the JSON DATA }); 

如果你想要url / expiry / 38 /那么的数字,你可以从你传给函数的变量$ aid中得到它。

 $app->put('/expiry/:aid/', function($aid) use($app, $adverts) { echo $aid; // from the url }); 

我希望这可以帮到你