создать и отправить форму - простое решение

0

Я попытался использовать это:

<a href="#" onclick="$('<form method=POST action=/logout>').submit();return false;">
  Sign out
</a>

Но $('<form method=POST action=/logout>').submit(); не работает в Firefox ang IE.

Есть ли равное простое решение для встроенного использования?

Текущее решение:

<a href="#" onclick="$('#logoutForm').submit();return false;">
Sign out
</a>
<form id="logoutForm" method="post" action="/logout"></form>

Но я все еще хочу понять, почему Firefox не хочет запускать jQuery $('<form method=POST action=/logout>').submit(); , И какой правильный путь для FF?

  • 0
    Сначала вставьте динамическую форму в DOM, щелкните / отправьте ее. Это должно работать во всех браузерах.
  • 0
    Конечно, если я добавлю <form id=myForm method=POST action=/logout></form> тогда я могу отправить его $('#myForm').submit(); , Но я хочу однострочное решение.
Показать ещё 5 комментариев
Теги:
post
form-submit
submit

3 ответа

0
Лучший ответ

Если вы действительно хотите это в одной строке, попробуйте следующее:

<a href="#" onclick="$('body').append('<form id=\'submitme\' method=\'POST\' action=\'/logout\'></form>');$('#submitme').submit();return false;">
  Sign out
</a>

http://jsfiddle.net/TrueBlueAussie/wWj2M/

Я пробовал эту скрипту в этих браузерах:

  • IE
  • Хром
  • Fire Fox

Примечание: ваш оригинал не генерировал "полный" HTML, поэтому я добавил отсутствующие кавычки и элемент закрывающей формы.

Также тестируется теперь с самозакрывающимся тегом формы, но это запрещено, поэтому придерживайтесь приведенного выше примера.

0

Я не знаю, зачем вам это делать INLINE... но:

<a href="#" onclick="event.preventDefault(), $.post('login',function(req){console.log('success');});">

эта функция (является обратным вызовом асинхронного запроса - ajax-way):

function(req){console.log('success',req);}

позволяет вам манипулировать возвращаемым значением req.

  • 0
    С этим решением сервер не может сделать перенаправление. И вам придется сделать это вместо console.log("success"); в каждом месте.
  • 0
    конечно. Это запрос Ajax . это не меняет текущую позицию. Чтобы перенаправить после публикации (после создания сеанса или файлов cookie, чтобы сохранить логин), вы должны сделать это в javascript: location.href = 'http://otherplace.com' вместо console.log();
0

Я не могу писать комментарии, поэтому я скажу это здесь. Я не уверен, почему вы хотели бы сделать это так и не использовать обычный способ (поскольку вы, похоже, не публикуете какие-либо данные)

<a href="#" href='/logout'>
  Sign out
</a>

или

<form method=POST action=/logout>
  <input type="submit" value='Sign out'/>
</form>
  • 0
    Во-первых: страница мигает с этим, и я хочу "ajax-way". Вторая причина: сервер ожидает POST, а не GET.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню