PUT, УДАЛИТЬ данные из Jquery в PHP - PullRequest
8 голосов
/ 03 февраля 2012

Я пытаюсь использовать Jquery.ajax () с методами PUT и DELETE и отправляю некоторые данные вместе с запросом, но на стороне php при печати запроса он пустой.

$.ajax({
url: 'ajax.php',
type: 'DELETE',
data: {some:'some',data:'data'},
}

В PHP:

print_r($_REQUEST);

и я получаю пустой массив. Я не знаю, является ли это jquery или php или просто не могу отправить данные таким образом. Я знаю, что метод DELETE предназначен для использования без отправки дополнительных данных, но здесь каждый ajax-запрос отправляется одному и тому же сценарию.

Ответы [ 3 ]

18 голосов
/ 03 февраля 2012

Для извлечения содержимого тела HTTP-запроса из запроса PUT в PHP нельзя использовать суперглобальный тип, например $_POST или $_GET или $_REQUEST, поскольку ...

Не существует суперглобального PHP для данных запроса PUT или DELETE

Вместо этого вам нужно вручную извлечь тело запроса из STDIN или использовать поток php://input.

$_put = file_get_contents('php://input');

Суперглобальный $_GET будет по-прежнему заполняться в случае запроса PUT или DELETE. Если вам нужен доступ к этим значениям, вы можете сделать это обычным способом. Я не знаком с тем, как jquery отправляет переменные с запросом DELETE, поэтому, если $_GET не заполнено, вы можете вместо этого попробовать вручную выполнить синтаксический анализ переменной $_SERVER['QUERY_STRING'] или использовать пользовательский параметр "action", как предложено @ShankarSangoli. для поддержки устаревших браузеров, которые не могут использовать javascript для отправки запроса DELETE.

4 голосов
/ 03 февраля 2012

Я думаю, DELETE тип поддерживается не всеми браузерами. Я бы передал дополнительный параметр, скажем action: delete. Попробуйте это.

$.ajax({
  url: 'ajax.php',
  type: 'POST',
  data: {  some:'some', data:'data', action: 'delete' },
}
3 голосов
/ 03 февраля 2012

Это может быть проблема с браузером, как сказано в документации по jQuery:

Тип запроса («POST» или «GET»), по умолчанию «GET». Примечание. Здесь также можно использовать другие методы HTTP-запроса, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.

http://api.jquery.com/jQuery.ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...