У меня есть jQuery, который отправляет данные на страницу AddComment.php. Данные – это идентификатор пользователя (может быть получен через сеанс), идентификатор элемента и комментарий в текстовой форме.
В этом случае, должны ли все данные отправляться через POST? Существуют ли случаи, когда можно найти сочетание GET и POST?
Прочитайте RFC 2616.
Существует очень специфическая семантика, связанная с GET и POST, которые оказывают большое влияние на кэширование и ведение журнала.
В случае вашего примера данные, которые необходимо добавить, должны быть отправлены в POST. Следует ли ссылаться на комментарий, который следует прокомментировать, через переменную POST или GET. (вы можете использовать POST для URL с строкой запроса, и любой компетентный веб-язык должен иметь возможность различать одно и то же имя переменной, отправленное с помощью обоих методов)
Более прозрачный пример того, когда GET и POST следует смешивать, – это когда POST на фронт-контроллер – здесь один и тот же путь используется различными различными функциональными возможностями (веб-страницы, если хотите). Конкретный бит функциональности, вызываемой, указывается запросом в операции GET. Если критерии выбора будут перенесены в POST, вам придется обслуживать оба сценария в фронт-контроллере, и вы теряете разрешение функций в файлах журнала.
Он должен быть отправлен POST прежде всего потому, что комментарий может превышать длину URL-адреса, к которому будет обращаться веб-браузер. Он также должен быть отправлен POST, потому что эта форма создает или изменяет данные, и это соглашение. Поисковые пауки не будут делать запросы POST, например, чтобы избежать этого.
Вы не можете смешивать GET и POST. HTTP-запрос имеет только один метод.
На самом деле я думаю, что если вы это сделаете:
var id= $('#id').val(); var itemid= $('#itemid').val(); var comment= $('#comment').val(); var url = 'AddComment.php?id='+id; var data = { itemid: itemid, comment: comment } $.post(url, data, successFunction);
ваш itemId будет отправлен через POST, а идентификатор через GET и php его распознает (иногда я делаю это, используя действие формы, но не через ajax).
BTW – зачем вам это нужно? Почему бы не отправить все через POST?