Si j'ai un formulaire comme celui-ci,
<form action="/Car/Edit/17" id="myForm" method="post" name="myForm"> ... </form>
comment puis-je le soumettre sans rediriger vers une autre vue par JavaScript / jQuery?
J'ai lu beaucoup de réponses de Stack Overflow, mais toutes me redirigent vers la vue renvoyée par la fonction POST.
javascript
jquery
html
forms
Duc Nuke
la source
la source
Réponses:
Afin d'obtenir ce que vous voulez, vous devez utiliser jQuery Ajax comme ci-dessous:
Essayez également celui-ci:
Solution finale
Cela a fonctionné parfaitement. J'appelle cette fonction depuis
Html.ActionLink(...)
la source
@Html.ActionLink("Add a Report", "Create", "Reports", new { carId = Model.Id }, new { onclick = "FUNCTION_WHICH_SUBMITES_FORM()" })
function SubForm (){ alert("1"); //e.preventDefault(); $.ajax({ url:'/Car/Edit/@Model.Id/', type:'post', data:$('#myForm').serialize(), success:function(){ alert("fasf"); } }); }
Vous pouvez y parvenir en redirigeant le formulaire
action
vers un fichier invisible<iframe>
. Il ne nécessite aucun JavaScript ni aucun autre type de script.la source
<input type='submit'...
pour<input type='reset'
et ajouteronclick='document.forms["myForm"].submit();'>
Placez un caché
iFrame
en bas de votre page ettarget
le dans votre formulaire:Rapide et facile. Gardez à l'esprit que bien que l'
target
attribut soit toujours largement pris en charge (et pris en charge dans HTML5), il était obsolète dans HTML 4.01.Vous devriez donc vraiment utiliser Ajax à l'épreuve du temps.
la source
target
est complètement valide, donc AJAX est toujours facultatif.Étant donné que toutes les réponses actuelles utilisent jQuery ou des astuces avec iframe, il n'y a aucun mal à ajouter une méthode avec juste du JavaScript:
la source
D'accord, je ne vais pas vous dire une façon magique de le faire parce qu'il n'y en a pas. Si vous avez défini un attribut d'action pour un élément de formulaire, il sera redirigé.
Si vous ne voulez pas qu'il redirige simplement, ne définissez aucune action et définissez
onsubmit="someFunction();"
Dans votre
someFunction()
vous faites ce que vous voulez, (avec AJAX ou pas) et à la fin, vous ajoutezreturn false;
pour dire au navigateur de ne pas soumettre le formulaire ...la source
Vous avez besoin d'Ajax pour y arriver. Quelque chose comme ça:
la source
Voir la
post
fonction de jQuery .Je créerais un bouton, définirais un
onClickListener
($('#button').on('click', function(){});
) et enverrais les données dans la fonction.Voir également la
preventDefault
fonction, de jQuery!la source
Solution One-Liner à partir de 2020, si vos données ne sont pas destinées à être envoyées en tant que
multipart/form-data
ouapplication/x-www-form-urlencoded
:la source
action="..."
, cela empêche efficacement le changement de page, mais empêche également la soumission de données sur le réseau.L'effet souhaité peut également être obtenu en déplaçant le bouton d'envoi en dehors du formulaire comme décrit ici:
Empêcher le rechargement de la page et la redirection lors de l'envoi du formulaire ajax / jquery
Comme ça:
la source
En utilisant cet extrait, vous pouvez soumettre le formulaire et éviter la redirection. Au lieu de cela, vous pouvez passer la fonction de succès comme argument et faire ce que vous voulez.
Et puis faites simplement:
la source
Si vous contrôlez le back-end, utilisez quelque chose comme à la
response.redirect
place deresponse.send
.Vous pouvez créer des pages HTML personnalisées pour cela ou simplement rediriger vers quelque chose que vous avez déjà.
Dans Express.js:
la source