将我的表单数据发布到mysql数据库

时间:2014-02-26 18:00:13

标签: php jquery mysql ajax forms

很新的php / mysql和jquery,我无法将表单数据上传到我的mysql数据库。我尝试了几种不同的方法并完成了我的研究,但我在网上找到的建议都没有为我工作,这就是我在这里发帖的原因。所以这是我最近失败的方法:

在我的索引文件中:

 <head>

 ...

<script type="text/javascript">
$(document).ready(function() {
    // Announcement form AJAX submit
    $('#announcementForm').submit(function() {
        $.ajax({
            url: 'ajax.php',
            type: 'POST',
            dataType: 'json',
            data: $(this).serialize(),
                success: function(data) {
                if (data.error) {
                    $('#error').css('display', 'block');
                } else {
                    $('#note').show();
                    $('#error').hide();
                    $('#fields').hide();
                }
            }
        });
        return false;
    });
});
</script>

 </head>
 <body>

 ...

 <form class="dl_form" id="announcementForm" method="post">
            <dl>
                <dt>Announcement</dt>
                <dd><textarea id="Announcement" sytle="width: 300px; height: 150px;" name="Announcement"></textarea></dd>
            </dl>
            <dl>
                <dt>Announcement Type:</dt>
                <dd><input type="radio" name="Type" value="schedule">Scheduling</input></dd>
                <dd><input type="radio" name="Type" value="general">General</input></dd>
            </dl>
            <dl>
                <dt></dt>
                <dd><input type="submit" value="submit" /></dd>
            </dl>
        </form>

        <div id="note">
            <p>Announcement posted successfully!"</p>
        </div>
        <div id="error">You haven't completed all of the required fields</div>

然后在我的ajax.php文件中(出于安全原因,某些行已被替换为“######”):

 <?php
//database credentials
$server    = '######';
$username   = '######';
$password   = '######';
$database   = '######';
$connect    = mysql_connect($server, $username, $password ) or die(mysql_error.'error connecting to db');

//select database
mysql_select_db($database, $connect) or die(mysql_error.'error selecting db');

//$typeValue = $('input:radio[name=Type]:checked').val());

if (!empty($_POST)){
    $Announcement   = $_POST['Announcement'];
    $Type           = $_POST['Type'];

    if (!empty($Announcement) && !empty($Type) )
    {
        //insert data into db
        mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
        VALUES ('', '".$Type."', '".$Announcement."')") or die(mysql_error());
    }else {
        echo json_encode(array(
            'error' => true,
            'msg'   => "You haven't completed all required fields!"
        ));
        exit;
    }
}

?>

非常感谢你们提供的任何帮助。

由于

对Jay Blanchard的回应更新:

我刚在浏览器中运行控制台。我得到的唯一错误是:

 SCRIPT1004: Expected ';'

参考我的JS的第一行:

 $function() {
 ...

更新2:

刚刚更新了我的代码以反映我最近的更改......在我至少触发提交点击之前,字段将会清空,表明至少发生了一些事情。然而,随着我的新一轮变化,甚至没有那个触发器,所以我仍然非常困难

1 个答案:

答案 0 :(得分:4)

在您的php中,您的echo声明错误而不是jason_encode而不是json_encode

此外

如果在数据库中它是自动递增的,你应该从查询中删除AnnouncementID,因为db会警告你列AnnouncementID的错误整数值。

编辑:在您的php部分声明中

mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
            VALUES ('', '".$Type."', '".$Announcement"')") or die(mysql_error());

您忘记.之后的连接运算符'".$Announcement应该是

mysql_query("INSERT into announcements (AnnouncementID, Type, Announcement)
            VALUES ('', '".$Type."', '".$Announcement."')") or die(mysql_error());

并在你的jquery而不是

$function() {

使用

$(document).ready(function(){