Jquery 为什么Ajax不接受我的VAR发布到Mysql?

Jquery 为什么Ajax不接受我的VAR发布到Mysql?,jquery,ajax,forms,Jquery,Ajax,Forms,我编写了am html表单,并使用了jquery验证方法。然后,当表单有效时,我使用Ajax将数据发送到mysql数据库。唯一的问题是表单中输入的数据都没有被处理,也许我遗漏了什么?在您说我需要转义php代码中的数据之前,我已经暂时删除了它以保持简单 <form id="photoSubmit" method="get" action=""> <div id="close-form">close</div> <label><em>Fi

我编写了am html表单,并使用了jquery验证方法。然后,当表单有效时,我使用Ajax将数据发送到mysql数据库。唯一的问题是表单中输入的数据都没有被处理,也许我遗漏了什么?在您说我需要转义php代码中的数据之前,我已经暂时删除了它以保持简单

<form id="photoSubmit" method="get" action="">

<div id="close-form">close</div>
<label><em>Fields marked * are required</em></label>
<div>
    <label>FIRST NAME *</label><br>
    <input type="text" name="firstName" id="firstName" autocorrect="off"/>
</div>
<div>    
    <label>SURNAME *</label><br>
    <input type="text" name="surname" id="surname" autocorrect="off"/>
</div>
</form>



    $().ready(function() {
    $.validator.setDefaults({
        submitHandler: function() {
            var firstName     = $('#firstName').attr('value');
            var surname     = $('#surname').attr('value'); 

        $.ajax({
            type: "POST",
            url: "insert_ac.php",
            data: "firstName="+ firstName + "&surname=" + surname,
            success: function(){
                window.location.replace("thank-you.php");
            }
        });
    return false;
        }
    });




        // validate signup form on keyup and submit
        $("#photoSubmit").validate({
            rules: {
                firstName: "required",
                surname: "required"

            },
            messages: {
                firstName: "Please enter your first name",
                surname: "Please enter your surname"
        });


    });

$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="fub005_mif"; // Database name
$tbl_name="snappingcities"; // Table name

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

$timedate = date("Y-m-d h:i:s");
$firstName=$_POST['firstName'];
$surname=$_POST['surname'];


// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="INSERT INTO $tbl_name(firstName,surname)VALUES('$firstName','$surname')";
$result=mysql_query($sql);
// if successfully insert data into database, displays message "Successful".
if($result){

}

else {
echo "ERROR";
}

我算出来了,很简单

更改此项:

data: "firstName="+ firstName + "&surname=" + surname
为此:

data: $("#photoSubmit").serialize()

我个人更喜欢让jQuery创建查询字符串,所以自己创建一个对象:

data: {
     firstname: $('#firstName').val(),
     surname: $('#surname').val()
}

另外,如果使用.attr'value',它可能会查找实际填充的值属性,而.val将为您提供元素的当前值-我认为这是您的主要问题。

更改代码后,我还意识到.val是错误的。