通过Ajax发送时未定义的变量


Undefined Variable When sending via Ajax

我有一个表单,它将forn字段值传递给ajx脚本,然后ajx脚本将这些值传递给php,并将它们发送到电子邮件地址。

我遇到的问题是,这些值没有显示,相反,我得到了单词undefined。

这是我的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;
});
});

这是我的表格

  <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>

然后是php(php代码上没有卫生,我只是想得到值,然后会使用更好的php代码)

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

 // mail
 $msg = "$name $email $telephone";
 $msg = wordwrap($msg,70);
 mail("*************","Application",$msg);
data: "name="+ name +"& email="+ email +"& telephone="+ telephone

删除空格

data: "name="+ name +"&email="+ email +"&telephone="+ telephone

您的代码中有一些错误

  • 请参阅此处的声明,

    <input type="text" name="name"  id="name" clsss="name" value="" placeholder="Name"/>
                                                ^ It should be class
    
  • 您以错误的方式获取输入字段值。应该是这样的:

    var name = $(this).find('.name').val();
    var email = $(this).find('.email').val();
    var telephone = $(this).find('.telephone').val();
    

所以你的AJAX请求应该是这样的:

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

您可以创建键/值对的对象:

$.ajax({
    ...
    data : { 'name' : name, 'email' : email , 'telephone' : telephone},
    ...
});

将数据发送到ajax,如下所示:

$.ajax({
    ...
    data : { 'foo' : bar, 'bar' : foo },
    ...
});

试试这个。它会很好用的。

$(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;
});
});

试试这个:

 <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;
        });
    }):