Tengo un formulario que pasa los valores del campo de formulario a un script ajax que luego pasa esos valores a php y se envían a una dirección de correo electrónico.

El problema que tengo es que los valores no se muestran y en su lugar obtengo la palabra indefinida.

Aquí está mi código ajax.

$(document).ready(function(){
$('form.save').submit(function () {
var name = $(this).find('.name').attr('value');
var email = $(this).find('.email').attr('value');
var telephone = $(this).find('.telephone').attr('value');
// ...
    $.ajax({
        type: "POST",
        url: "application.php",
        data: "name="+ name +"& email="+ email +"& telephone="+ telephone,
        success: function(){
            $('form.save').hide(function(){$('div.success')});
        }
    });
return false;
});
});

Aqui esta mi forma

  <form action="" method="post" class="save">

                              <input type="text" name="name"  id="name" clsss="name" value="" placeholder="Name"/>

                              <input  type="text" name="email"  class="email" value="" placeholder="Email"/>


                              <input  type="text" name="telephone"  class="telephone" value=""placeholder="Telephone"/>

                            <input name="certified" type="checkbox" value="" checked>I am a Certified sophisticated Investor
                            <input type="hidden" name="type" value="Certified sophisticated Investor">
                            <input type="submit" name="submit" class="button" value="Submit"/>

                           </div>
                      </form>

Y luego el php (no hay saneamiento en el código php, solo estoy tratando de obtener el valor y luego usaré un mejor código php)

 $name = $_POST['name'];
 $email = $_POST['email'];
 $telephone = $_POST['telephone'];


 // mail
 $msg = "$name $email $telephone";
 $msg = wordwrap($msg,70);
 mail("*************","Application",$msg);
0
sam Walker 9 may. 2016 a las 13:42

5 respuestas

Puede crear un objeto de pares clave / valor:

$.ajax({
    ...
    data : { 'name' : name, 'email' : email , 'telephone' : telephone},
    ...
});
0
Dhara Parmar 9 may. 2016 a las 10:47

Prueba esto:

 <form id="order-form">    <!--Try to add id for your form -->
    <!--your code here-->
    ...
    ...
 </form>

Jquery:

 $(document).ready(function(){
      $('form.save').submit(function () {
        var data = $("#order-form").serialize();  //You should use serialize for send data
          $.ajax({
            url: "/yourUrl",
            data: data,       
            type: 'GET',
            dataType: 'html',
            success: function (result) {
                 $('form.save').hide(function(){$('div.success')});
                 $("#renderarea").html(result); 
             }
            }); 
            return false;
        });
    }):
0
praguan 9 may. 2016 a las 11:02
data: "name="+ name +"& email="+ email +"& telephone="+ telephone

Eliminar los espacios

data: "name="+ name +"&email="+ email +"&telephone="+ telephone
1
Lim Guang Jian 9 may. 2016 a las 10:45

Prueba esto. Funcionará bien

$(document).ready(function(){
$('form.save').submit(function () {
var str = $( "form.save" ).serialize();


$.ajax({
    type: "POST",
    url: "getajax.php",
    data: str,
    success: function(){
        $('form.save').hide(function(){$('div.success')});
    }
});
return false;
});
});
0
Jon 9 may. 2016 a las 10:56

Envíe datos a ajax de la siguiente manera:

$.ajax({
    ...
    data : { 'foo' : bar, 'bar' : foo },
    ...
});
0
Ranjit Shinde 9 may. 2016 a las 10:50