为什么Ajax不会拿起我的vars发布到Mysql?

时间:2014-08-11 09:28:23

标签: jquery ajax forms

我编写了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";
}

2 个答案:

答案 0 :(得分:0)

我解决了这个问题,很简单。

改变这个:

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

到此:

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

答案 1 :(得分:0)

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

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

如果您使用.attr('value'),它可能正在寻找实际填充的值属性,而.val()将为您提供元素的当前值 - 我认为这是您的主要问题。< / p>