form - php ajax
Formulario jQuery AJAX utilizando mail() El script PHP envía el correo electrónico, pero los datos POST del formulario HTML no están definidos (6)
Deje su código email.php igual, pero reemplace este código JavaScript:
var name = $("#form_name").val();
var email = $("#form_email").val();
var text = $("#msg_text").val();
var dataString = ''name=''+ name + ''&email='' + email + ''&text='' + text;
$.ajax({
type: "POST",
url: "email.php",
data: dataString,
success: function(){
$(''.success'').fadeIn(1000);
}
});
con este:
$.ajax({
type: "POST",
url: "email.php",
data: $(form).serialize(),
success: function(){
$(''.success'').fadeIn(1000);
}
});
Para que los nombres de entrada de tu formulario coincidan.
Gracias por tomarse el tiempo para mirar, chicos. Estoy creando un formulario de contacto AJAX bastante básico usando jQuery. El correo electrónico envía, pero al abrir el correo electrónico no hay datos POST, así que solo obtengo las cadenas que definí en el script PHP. En el cliente de correo electrónico de mi teléfono, el contenido del correo electrónico dice literalmente ''indefinido''. Intenté agregar diferentes tipos de datos de encabezado en vano, y una serie de variaciones en la función PHP mail ().
Estoy más que dispuesto a adoptar una solución más sencilla para un formulario AJAX simple, así que gracias de antemano por cualquier nuevo enfoque.
Aquí está la forma:
<section id="left">
<label for="form_name">Name</label>
<input name="form_name" id="form_name" type="text" >
<label for="form_email">Email</label>
<input name="form_email" id="form_email" type="email" >
</section>
<section id="right">
<label for="form_msg">Message</label>
<textarea name="form_msg" id="form_msg"></textarea>
<input id="submit" class="button" name="submit" type="submit" value="Send">
</section>
</form>
El jQuery AJAX:
$(function() {
$("#contact .button").click(function() {
var name = $("#form_name").val();
var email = $("#form_email").val();
var text = $("#msg_text").val();
var dataString = ''name=''+ name + ''&email='' + email + ''&text='' + text;
$.ajax({
type: "POST",
url: "email.php",
data: dataString,
success: function(){
$(''.success'').fadeIn(1000);
}
});
return false;
});
});
El script PHP (archivo externo ''email.php''):
<?php
if($_POST){
$name = $_POST[''form_name''];
$email = $_POST[''form_email''];
$message = $_POST[''form_msg''];
//send email
mail("[email protected]", "This is an email from:" .$email, $message);
}
?>
Está utilizando un nombre de parámetros incorrecto, intente:
if($_POST){
$name = $_POST[''name''];
$email = $_POST[''email''];
$message = $_POST[''text''];
//send email
mail("[email protected]", "51 Deep comment from" .$email, $message);
}
Estás utilizando los parámetros de publicación incorrectos:
var dataString = ''name=''+ name + ''&email='' + email + ''&text='' + text;
^^^^-$_POST[''name'']
^^^^--$_POST[''name'']
etc....
Los ID javascript / html son irrelevantes para el POST real, especialmente cuando construyes tu propia cadena de datos y no usas esos mismos ID.
No es necesario hacer una cadena de consulta. Simplemente ponga sus valores en un objeto y jQuery se encargará del resto por usted.
var data = {
name: $("#form_name").val(),
email: $("#form_email").val(),
message: $("#msg_text").val()
};
$.ajax({
type: "POST",
url: "email.php",
data: data,
success: function(){
$(''.success'').fadeIn(1000);
}
});
Su script PHP (archivo externo ''email.php'') debería verse así:
<?php
if($_POST){
$name = $_POST[''name''];
$email = $_POST[''email''];
$message = $_POST[''text''];
//send email
mail("[email protected]", "51 Deep comment from" .$email, $message);
}
?>
Tu código debería ser:
<section id="right">
<label for="form_msg">Message</label>
<textarea name="form_msg" id="#msg_text"></textarea>
<input id="submit" class="button" name="submit" type="submit" value="Send">
</section>
Js
var data = {
name: $("#form_name").val(),
email: $("#form_email").val(),
message: $("#msg_text").val()
};
$.ajax({
type: "POST",
url: "email.php",
data: data,
success: function(){
$(''.success'').fadeIn(1000);
}
});
El PHP:
<?php
if($_POST){
$name = $_POST[''name''];
$email = $_POST[''email''];
$message = $_POST[''text''];
//send email
mail("[email protected]","My Subject:",$email,$message);
}
?>