为什么这个Ajax表单提交不起作用?

时间:2011-05-23 22:25:45

标签: php jquery mysql ajax

以下代码有什么问题?

警报返回成功,但表中没有添加任何内容。表格:

<form id="Form_1" name="theform" method="post" action="">
    <label for="email" class="emailLab">Email * </label>
    <input type="email" name="email" id="email_id" autocorrect placeholder="Email" value="" />
    <label for="phone">Phone </label>
    <input type="tel" name="phone" id="phone_id" autocorrect placeholder="Phone" />
    <input type="image" src="images/btn_enter.png" height="26" width="147" id="submit" data-inline="true" data-role="none" />
</form>

在提交时我调用此函数:

function serverDB (){
    // Define variables from input
    var vEmail = document.getElementById('email_id').value;
    var vPhone = document.getElementById('phone_id').value;

    var theData = 'email=' + vEmail + '&phone=' +vPhone;
    alert (theData);

    $.ajax({
        type: "POST",
        url: "process.php",
        data: theData,
        success: function(){
            alert ("Success");
        }
    });
}

PHP代码:

<?
    $email  = $_POST['email'];
    $phone  = $_POST['phone'];
    mysql_connect("host", "user", "password") or die(mysql_error());
    mysql_select_db("sandbox_itouch") or die(mysql_error());
    mysql_query("INSERT INTO `data` (email, phone) VALUES ('$email','$phone')");
?>

4 个答案:

答案 0 :(得分:1)

在“&amp; phone”之后,你在这一行上错过了一个'=':

 var theData = 'email=' + vEmail + '&phone' +vPhone;

这可能是一个错字。

答案 1 :(得分:1)

检查$ _POST值是否到达您的脚本,并且您的MySQL连接是否按预期工作,并且您的列和表名称与数据库匹配。

您可以创建这样的日志

$fh = fopen('log.txt', 'w');
fwrite($fh, print_r($_POST, true));
fclose($fh);

如果未创建log.txt,您将知道该脚本未被执行。

答案 2 :(得分:0)

向您的代码添加日志记录,以查看您的服务器端脚本是否正在运行,获取的距离,获取的数据以及它看到的错误。

答案 3 :(得分:0)

尝试将数据类型更改为JSON或在发布时明确指定数据类型:

var theData = '{ email:' + vEmail + ', phone:' + vPhone + '}' ;

$.ajax({
    type: "POST",
    url: "process.php",
    data: theData,
    success: function(){
        alert ("Success");
        $().innerHTML =
    }
});