Przesłać formularz i pozostać na tej samej stronie?
Mam formę, która wygląda tak
<form action="receiver.pl" method="post">
<input name="signed" type="checkbox">
<input value="Save" type="submit">
</form>
I chciałbym pozostać na tej samej stronie, po kliknięciu Submit, ale nadal mam receiver.pl
wykonane.
5 answers
Najprostsza odpowiedź: jQuery. Zrób coś takiego:
$(document).ready(function(){
var $form = $('form');
$form.submit(function(){
$.post($(this).attr('action'), $(this).serialize(), function(response){
// do something here on success
},'json');
return false;
});
});
Jeśli chcesz dodawać treść dynamicznie i nadal potrzebujesz jej do działania, a także z więcej niż jednym formularzem, możesz to zrobić:
$('form').live('submit', function(){
$.post($(this).attr('action'), $(this).serialize(), function(response){
// do something here on success
},'json');
return false;
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-30 15:29:11
99% czasu używałbym XMLHttpRequest lub fetch do czegoś takiego. Istnieje jednak alternatywne rozwiązanie, które nie wymaga javascript...
Możesz umieścić Ukryty iframe na swojej stronie i ustawić atrybut docelowy formularza tak, aby wskazywał na ten iframe.
<style>
.hide { position:absolute; top:-1px; left:-1px; width:1px; height:1px; }
</style>
<iframe name="hiddenFrame" class="hide"></iframe>
<form action="receiver.pl" method="post" target="hiddenFrame">
<input name="signed" type="checkbox">
<input value="Save" type="submit">
</form>
Jest bardzo niewiele scenariuszy, w których wybrałbym tę trasę. Ogólnie obsługa javascript jest lepsza, ponieważ z javascript można może...
- z gracją obsługuj błędy (np. retry) [12]}podaj wskaźniki interfejsu użytkownika (np. Ładowanie, przetwarzanie, sukces, awaria)
- Uruchom logikę przed wysłaniem żądania lub uruchom logikę po otrzymaniu odpowiedzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 21:42:55
Sposobem HTTP / CGI jest zwrócenie kodu statusu HTTP 204 (bez zawartości).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-30 16:37:48
Po naciśnięciu przycisku submit strona jest wysyłana na serwer. Jeśli chcesz wysłać go asynchronicznie, możesz to zrobić za pomocą ajax.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-03 10:29:08
Wystarczy użyć: action=""
. Nie ma takiej potrzeby jak javascript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-17 05:15:05