Foros del Web » Programando para Internet » Javascript »

Error al ejecutar código ajax que mande email con función php

Estas en el tema de Error al ejecutar código ajax que mande email con función php en el foro de Javascript en Foros del Web. Hola tras leer las faq estoy intentando llamar a una función de un documento php cuando se produzca el submit de un formulario usando ajax. ...
  #1 (permalink)  
Antiguo 09/11/2011, 16:39
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 12 años, 11 meses
Puntos: 1
Error al ejecutar código ajax que mande email con función php

Hola tras leer las faq estoy intentando llamar a una función de un documento php cuando se produzca el submit de un formulario usando ajax.

He seguido las recomendaciones del foro pero algo debo hacer mal.

En primer lugar os pongo el código de mi documento php:

Código PHP:
<?
function enviar_email(){
$email=$_POST['email'];
$teléfono=$_POST['telefono'];



if(
$email != "" && $teléfono !="")
{
    
$message="";
    foreach(
$_POST as $nombre_html=> $valor_html)
    {
    
$message.= $nombre_html.": ".$valor_html."\n";    
    }
    
    
mail("[email protected]","solicitud de presupuesto",$message);
}
}
?>
en mi formulario llamo a la función enviar_email así:
<form action="" method="post" onsubmit="enviar_email();">

y en el cabecero del archivo incluí esta referencia:

<script language="JavaScript" src="email.php"></script>

¿Que hago mal para que mi email no se envíe?
  #2 (permalink)  
Antiguo 10/11/2011, 07:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Error al ejecutar código ajax que mande email con función php

Tras leer algo más ahora he cambiado la forma de hacerlo:

El código de mi formulario con la llamda de ajax es este:
Código HTML:
<script>
function submitForm()
{ 
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
  
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) 
                  document.ajax.dyn="Received:"  + xhr.responseText; 
              else 
                 document.ajax.dyn="Error code " + xhr.status;
         }
    }; 

   xhr.open(POST, "email.php",  true); 
   xhr.send(null); 
} 
</script>

<form action="" method="post"  onsubmit="">
<p class="subtitulo">Datos del vehículo:</p>
<div class="grupoizquierda">

<div class="datos">
<label>Marca</label>
<input  type="text" name="marca"/>
</div>

<div class="datos">
<label>Versión</label>
<input type="text" name="version"/>
</div>

<div class="datos">
<label>Garaje</label>
<input type="checkbox" name="garaje"/>
</div>

<div class="datos">
<label>Compañía</label>
<input type="text" name="compania de seguros"/>
</div>

</div><!---final grupoizquierda--->

<div class="grupoderecha">

<div class="datos">
<label>Modelo</label>
<input type="text" name="modelo"/>
</div>

<div class="datos">
<label>CV</label>
<input type="text" name="cv"/>
</div>

<div class="datos">
<label>Código Postal</label>
<input type="text" name="codigo postal"/>
</div>

<div class="datos">
<label>Nº póliza actual</label>
<input type="text" name="poliza actual"/>
</div>

</div><!--final grupoderecha-->




<div class="grupocentro">


<p class="subtitulo">Datos de matriculación:</p>



<div class="datos">
<label>Año de matriculación</label>
<select name="matriculacion"><option>Seleccione</option><option>1990</option><option>1991</option><option>1992</option><option>1993</option><option>1994</option><option>1995</option><option>1996</option><option>1997</option><option>1998</option><option>1999</option><option>2000</option><option>2001</option><option>2002</option><option>2003</option><option>2004</option><option>2005</option><option>2006</option><option>2007</option><option>2008</option><option>2009</option><option>2010</option><option>2011</option><option>2012</option></select>
</div>

<div class="datos">
<label>Mes de matriculación</label>
<select name="mes matriculacion"><option>Seleccione</option><option>Enero</option><option>Febrero</option><option>Marzo</option><option>Abril</option><option>Mayo</option><option>Junio</option><option>Julio</option><option>Agosto</option><option>Septiembre</option><option>Octubre</option><option>Noviembre</option><option>Diciembre</option></select>
</div>


<p class="subtitulo">Datos del conductor:</p>


<div class="grupoizquierda">

<div class="datos">
<label>Nombre</label>
<input type="text" name="nombre"/>
</div>

<div class="datos">
<label>DNI</label>
<input type="text" name="dni" /> 
</div>

<div class="datos">
<label>Sexo</label>
<select name="sexo"><option>Seleccione</option><option>Hombre</option><option>Mujer</option> </select>
</div>

</div><!--end grupoizquierda de grupocentro-->


<div class="grupoderecha">

<div class="datos">
<label>Años de carnet</label>
<input type="text" name="anyos de carnet"/>
</div>

<div class="datos">
<label>Edad</label>
<input type="text" name="edad"/>
</div>

</div><!--end grupoderecha de grupo centro-->

<br />
<br />
<br />
<br />
<br />
<p class="subtitulo">Datos para recibir información solicitada:</p>

<div class="grupoizquierda">

<div class="datos">
<label>Email</label>
<input type="text" name="email"/>
</div>

</div><!--fin grupoizquierda-->

<div class="grupoderecha">

<div class="datos">
<label>Teléfono de contacto</label>
<input type="text" name="telefono"/>
</div>

</div><!--fin grupoderecha-->

<br />

<div class="datos">
<p style="font-size:18px">Observaciones:</p>
<textarea name="observaciones" style="height:80px;width:350px;" /></textarea>
</div>

<input type="submit" name="enviar" onclick="submitForm()" style="height:30px; width:150px; margin-top:15px; margin-left:15px;" value="Enviar datos"/>
<a href="#" id="politica" class="politica">Política de privacidad</a>
</div><!--final grupocentro-->



</form> 
Con esta modificación sigue sin llamar a la función contenido dentro de mi archivo php. En el elemento html input es donde llamo a la función submitForm() para que llame a la función contenida en el archivo php. ¿Qué hago mal?
El archivo php que manda el email es este:

Código PHP:
<?
function enviar_email(){
$email=$_POST['email'];
$teléfono=$_POST['telefono'];



if(
$email != "" && $teléfono !="")
{
    
$message="";
    foreach(
$_POST as $nombre_html=> $valor_html)
    {
    
$message.= $nombre_html.": ".$valor_html."\n";    
    }
    
    
mail("[email protected]","solicitud de presupuesto",$message);
}
}
?>

Etiquetas: ajax, email, formulario, html, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.