2013-05-08 3 views
2

У меня проблема с Slim Framework и запросом PUT. У меня есть сценарий litte jQuery, который будет обновлять время истечения срока действия при нажатии кнопки.Slim PUT возвращает NULL

$("#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, где я настроил Слим, я это

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

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

ответ

3

Во-первых, вы должны проверить, что данные JSon, потому что это не действует: http://jsonlint.com/ Попробуйте с этим: { «помощь»: «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/окончания//, то вы можете получить его из переменных $ помощи, которую вы передаваемая функции

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

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

+0

Спасибо! Это сработало отлично! –

Смежные вопросы