Поддержка нажатия на ссылку, но отправка поста (VS Get) на сервер, без AJAX?
-
04-10-2019 - |
Вопрос
Я думаю, что это не совсем возможно, но, возможно, я ошибаюсь. Я просто разрываюсь между теми, кто считает, что только почтовые запросы должны изменять данные на сервере и людях, которые расслабляют правило и позволяют получать запросы на изменение данных.
Возьми эту ситуацию. Скажем, у вас есть таблица, каждая строка - это строка в базе данных. Я хотел бы позволить им удалить ряд через причудливый значок «X» как самый последний <td></td>
элемент в ряд. AFAIK, единственный способ отправить сообщение на сервер - через форму. Но я действительно наполнив целую форму в последний <td></td>
Элемент просто чтобы сделать пост? Или я должен обмануть и использовать <a href=...></a>
Тег, который отправляет запрос на получение?
Вы можете думать «сделать обоими! Отправить сообщение и использовать <a ...></a>
ярлык! Используйте Faints JavaScript + XHR! «И я скажу, ой? А как будет разлагаться в нулевой среде JavaScript?
Может быть, мы достигли точки, когда не имеет смысла беспокоиться о изящной унижании? Я не уверен. Кому ты рассказываешь? Я новичок в веб-разработке, но я понимаю большую часть признаков концепций.
Решение
Вам не нужно покрасить форму в каждый финальный TD - вы можете окружать всю таблицу с одной формой, которая имеет кнопку «Отправить» в каждом финальном TD. Каждый требуется другое имя / идентификационное значение, например
u003Ctd>u003Cinput type="submit" name="delete_172" value="Удалить">u003C/td>...u003Ctd>u003Cinput type="submit" name="delete_198" value="Удалить">u003C/td>
Затем сервер получит один delete_172=Delete
в виде POST
Параметры. Сканируйте все параметры, чтобы соответствовать delete_[0-9]+
, Сплите на подчеркивании, и у вас есть идентификатор записи записи, который будет удален, или у вас есть клавиша карты, чтобы найти идентификатор записи, чтобы удалить (если вы хотите сохранить идентификаторы записи из страницы для безопасности)
После этого прикрепите обработчик событий JS к событию ONSUBMIT FORD, чтобы представить все это в XHR и динамически удалять строку таблицы.
Другие советы
Одной из проблем с модифицирующим данными «Получить запрос» заключается в том, что путем посещения данных связи изменена. Ссылка не может быть даже навигации к человеку, например, Google, ползут ваш сайт. Удар обновления также изменяет данные.
Я не советую игнорировать Конвенцию о том, чтобы получить VS пост. Назад кнопка и страница обновляются и такие вещи дадут вам ад. (И каждый раз, когда вы подаете почту запрос, перенаправляйтесь на свежий вид, по тем же причинам.)
Только вы знаете своих пользователей, но я думаю, что это довольно приемлемо в наши дни, чтобы требовать JavaScript в «веб-приложении» и позволить парням No-JS придерживаться «веб-страниц». Во всяком случае, для того, что это стоит, я иногда люблю делать меньшую модую (чем Ajax) решение JavaScript, как это ...
Поместите форму где угодно, на которой вы хотите на странице:
<form method="post" target="yourpage.ext" id="deleteRecordForm">
<input type="hidden" name="IdToDelete" value="" id="deleteRecordInput" />
</form>
Для вашей ссылки:
<a href="#" onclick="deleteRecord(thisId);return false;">[x]</a>
Наконец, JavaScript:
<script type="text/javascript">
function deleteRecord (id){
if (confirm ('Are you sure you want to delete this record?')){
document.getElementById('deleteRecordInput').value = id;
document.getElementById('deleteRecordForm').submit ();
}
}
</script>