Si tengo un formulario como este,
<form action="/Car/Edit/17" id="myForm" method="post" name="myForm"> ... </form>
¿Cómo puedo enviarlo sin redirigir a otra vista mediante JavaScript / jQuery?
Leí muchas respuestas de Stack Overflow, pero todas me redirigen a la vista devuelta por la función POST.
javascript
jquery
html
forms
Duke Nuke
fuente
fuente
Respuestas:
Para lograr lo que desea, debe usar jQuery Ajax de la siguiente manera:
Prueba también este:
Solución final
Esto funcionó a la perfección. Llamo a esta función desde
Html.ActionLink(...)
fuente
@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"); } }); }
Puede lograrlo redirigiendo el formulario
action
a un archivo invisible<iframe>
. No requiere JavaScript ni ningún otro tipo de scripts.fuente
<input type='submit'...
a<input type='reset'
y añadironclick='document.forms["myForm"].submit();'>
Coloque un oculto
iFrame
en la parte inferior de su página ytarget
en su formulario:Rapido y Facil. Tenga en cuenta que, si bien el
target
atributo todavía se admite ampliamente (y se admite en HTML5), quedó obsoleto en HTML 4.01.Entonces, realmente debería usar Ajax a prueba de futuro.
fuente
target
es completamente válido, por lo que AJAX sigue siendo opcional.Dado que todas las respuestas actuales usan jQuery o trucos con iframe, pensé que no hay ningún daño para agregar un método con solo JavaScript:
fuente
De acuerdo, no les voy a contar una forma mágica de hacerlo porque no la hay. Si tiene un atributo de acción establecido para un elemento de formulario, lo redireccionará.
Si no desea que se redirija, simplemente no configure ninguna acción y configure
onsubmit="someFunction();"
En tu
someFunction()
haces lo que quieras, (con AJAX o no) y al final, agregasreturn false;
para decirle al navegador que no envíe el formulario ...fuente
Necesitas Ajax para que esto suceda. Algo como esto:
fuente
Vea la
post
función de jQuery .Crearía un botón, establecería un
onClickListener
($('#button').on('click', function(){});
) y enviaría los datos en la función.Además, vea la
preventDefault
función de jQuery!fuente
Solución de una sola línea a partir de 2020, si sus datos no están destinados a enviarse como
multipart/form-data
oapplication/x-www-form-urlencoded
:fuente
action="..."
, esto evita efectivamente el cambio de página, pero también evita que los datos se envíen a través de la red.El efecto deseado también se puede lograr moviendo el botón de envío fuera del formulario como se describe aquí:
Evite la recarga de la página y la redirección en el formulario enviar ajax / jquery
Me gusta esto:
fuente
Con este fragmento, puede enviar el formulario y evitar la redirección. En su lugar, puede pasar la función de éxito como argumento y hacer lo que quiera.
Y luego simplemente haz:
fuente
Si controlas el back-end, usa algo como en
response.redirect
lugar deresponse.send
.Puede crear páginas HTML personalizadas para esto o simplemente redirigir a algo que ya tiene.
En Express.js:
fuente