Tengo un sitio web de anuncios clasificados, y en la página donde se muestran los anuncios, estoy creando un formulario "Enviar un consejo a un amigo" ...
Así que cualquiera que quiera puede enviar una sugerencia del anuncio a la dirección de correo electrónico de algunos amigos.
Supongo que el formulario debe enviarse a una página php, ¿verdad?
<form name='tip' method='post' action='tip.php'>
Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
<input type="submit" value="Skicka Tips"/>
<input type="hidden" name="ad_id" />
</form>
Al enviar el formulario, la página se vuelve a cargar ... No quiero eso ...
¿Hay alguna forma de hacer que no se recargue y aún envíe el correo? Preferiblemente sin ajax o jquery ...
Gracias
php
javascript
html
forms
FruDe
fuente
fuente
<iframe>
y eltarget
atributo lo hará.Respuestas:
Deberá enviar una solicitud ajax para enviar el correo electrónico sin volver a cargar la página. Eche un vistazo a http://api.jquery.com/jQuery.ajax/
Su código debe ser algo parecido a:
El formulario se enviará en segundo plano a la
send_email.php
página que deberá manejar la solicitud y enviar el correo electrónico.fuente
return false;
antes de los últimos corchetes de cierreEncontré lo que creo que es una forma más fácil. Si coloca un Iframe en la página, puede redirigir la salida de la acción allí y hacer que aparezca. No puedes hacer nada, por supuesto. En ese caso, puede configurar la visualización del iframe en ninguno.
fuente
action="about:blank"
$_POST["ad_id"]
O usa AJAX o usted
fuente
<form id="myGiswebForm" method="post" action="https://******/saveForm.asp" target="myiframe">
y<iframe style="display:none;" src="" name="myiframe"></iframe>
La forma más rápida y sencilla es utilizar un iframe. Pon un marco en la parte inferior de tu página.
<iframe name="frame"></iframe>
Y en tu forma haz esto.
y hacer que el marco sea invisible en tu css.
fuente
display:none;
y noborder:0px
. Intenté editar, pero mis ediciones son rechazadas por revisores que no parecen molestarse en mirar el comentario de edición. Modifique su respuesta para corregir el código.Enviar formulario sin volver a cargar la página y obtener el resultado de los datos enviados en la misma página
Aquí hay algunos de los códigos que encontré en Internet que resuelven este problema:1.) IFRAME
Cuando se envía el formulario, la acción se ejecutará y apuntará al iframe específico para recargar.
index.php
iframe_content.php
2.) AJAX
Index.php:
server_action.php
Etiquetas: phpajaxjquerylado del servidorhtml
fuente
Es imprescindible tener ayuda
jquery-ajax
en este caso. Sinajax
, actualmente no hay solución.Primero, llame a una función de JavaScript cuando se envíe el formulario. Solo configúrelo
onsubmit="func()"
. Incluso si se llama a la función, se realizará la acción predeterminada del envío. Si se realiza, no habría forma de evitar que la página se actualice o se redirija. Entonces, la siguiente tarea es evitar la acción predeterminada. Inserte la siguiente línea al comienzo defunc()
.Ahora, no habrá redirecciones ni actualizaciones. Entonces, simplemente realiza una llamada ajax desde
func()
y hace lo que quiera hacer cuando finalice la llamada.Ejemplo:
Formar:
Javascript:
fuente
así es exactamente como PUEDE funcionar sin jQuery y AJAX y está funcionando muy bien usando un iFrame simple. ME ENCANTA, funciona en Opera10, FF3 e IE6. Gracias a algunos de los carteles anteriores que me indican la dirección correcta, esa es la única razón por la que publico aquí:
el código php que genera la página que se llama arriba:
fuente
print
para imprimir código HTML. Simplemente cierre la etiqueta php?>
y agregue el código html después. Y evita usarloexit
no es necesario (errores fatales, ...)Esto debería solucionar tu problema.
En este código, después de hacer clic en el botón enviar, llamamos jquery ajax y pasamos la url para publicar el
tipo POST / GET
data: información de datos que puede seleccionar campos de entrada o cualquier otro.
éxito: devolución de llamada si todo está bien desde el
texto del parámetro de la función del servidor , html o json, respuesta del servidor
con éxito, puede escribir advertencias de escritura si los datos que obtuvo están en algún tipo de estado, etc. o ejecute su código qué hacer a continuación.
fuente
Puede intentar configurar el atributo de destino de su formulario en un iframe oculto, para que la página que contiene el formulario no se vuelva a cargar.
Lo probé con cargas de archivos (que sabemos que no se pueden hacer a través de AJAX), y funcionó a la perfección.
fuente
¿Ha intentado utilizar un iFrame? Sin ajax y la página original no se cargará.
Puede mostrar el formulario de envío como una página separada dentro del iframe, y cuando se envíe, la página externa / contenedor no se recargará. Esta solución no utilizará ningún tipo de ajax.
fuente
si está enviando a la misma página donde está el formulario, puede escribir las etiquetas del formulario sin una acción y se enviará, así
fuente
Hice algo similar al jquery anterior, pero necesitaba restablecer los datos de mi formulario y los lienzos de archivos adjuntos gráficos. Así que esto es lo que se me ocurrió:
Eso funciona bien para mí, para su aplicación de solo un formulario html, podemos simplificar este código jquery de esta manera:
fuente
Necesitará usar JavaScript sin que resulte en un
iframe
(enfoque desagradable).Puedes hacerlo en JavaScript; usar jQuery lo hará indoloro.
Le sugiero que consulte AJAX y Publicación.
fuente
Otra posibilidad es hacer un enlace javascript directo a su función:
...
fuente
La página se volverá a cargar si no desea utilizar javascript.
fuente
<iframe name="ew" />
y<form target="ew" />
Intenté muchas veces encontrar una buena solución y la respuesta de @taufique me ayudó a llegar a esta respuesta.
NB : No olvide poner
event.preventDefault();
al principio del cuerpo de la función.fuente
Aquí hay algo de jQuery para publicar en una página php y recuperar html:
fuente