Slim PUT возвращает NULL

У меня проблема с Slim Framework и запросом PUT. У меня есть сценарий litte 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"); } }); }); 

Я всегда получаю «Что-то пошло не так!»

В моем index.php, где я настроил Slim, у меня есть это

 $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" } 

Таким образом, сообщение есть, но не желаемый результат. Что я делаю не так?

Solutions Collecting From Web of "Slim PUT возвращает NULL"

Сначала вы должны проверить данные json, потому что это неверно: http://jsonlint.com/ Попробуйте с этим: {"help": "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 }); 

Надеюсь, это поможет вам