Поддержка нажатия на ссылку, но отправка поста (VS Get) на сервер, без AJAX?

StackOverflow https://stackoverflow.com/questions/2791969

Вопрос

Я думаю, что это не совсем возможно, но, возможно, я ошибаюсь. Я просто разрываюсь между теми, кто считает, что только почтовые запросы должны изменять данные на сервере и людях, которые расслабляют правило и позволяют получать запросы на изменение данных.

Возьми эту ситуацию. Скажем, у вас есть таблица, каждая строка - это строка в базе данных. Я хотел бы позволить им удалить ряд через причудливый значок «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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top