php - 获取我的表单数据以发布到 mysql 数据库

标签 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:

刚刚更新了我的代码以反射(reflect)我最近的更改......在我至少可以触发提交点击之前甚至字段会变空,表明至少发生了一些事情。然而,随着我新一轮的改变,甚至没有触发,所以我仍然很困

最佳答案

在你的 php 中你犯了一个错误,你的 echo 语句不是 jason_encode 而不是 json_encode

另外

如果在数据库中它是自动递增的,您还应该从查询中删除 AnnouncementID,因为数据库会警告您 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(){

关于php - 获取我的表单数据以发布到 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049481/

相关文章:

php - JWT Cookie 存储不正确 - Laravel

php - 是否可以获取具有其他域的文件夹的脚本所包含的脚本的域名?

javascript - Fabric.js 中的灰度很慢

jquery - Bootstrap nav - 在桌面上保持展开并在移动设备上折叠

mysql计算特定日期内特定时间段之间的数据

javascript - 无法阻止点击登录后密码在密码字段中自动延长

php - 我可以使用常量名称的变量来访问 PHP 类常量吗?

javascript - 删除选择列表中的向下箭头

javascript - 我想将可更改的数据存储在表行的一列中

MySQL - 将特定行设为 NULL 或 max 值,而不仅仅是列