Ajax不存储数据

时间:2017-03-15 13:07:02

标签: javascript php jquery ajax

我有一个程序,我可以在没有javascript的情况下添加数据。但我想使用AJAX,我不知道为什么它不起作用。当我单击添加按钮时,它确实没有发生任何事情,我没有在phpmyadmin中看到数据。任何人都可以帮助我吗?

的index.php:

session_start();
require_once("auth.php");
require_once("control.php"); 

<div class="well well-sm bs-component">
    <div class="form-group row add">
    <form method="post" action="">
        <div class="col-md-12">
         <label for="content" class="control-label">Your Comment</label>
            <input type="hidden" name="uid" value="<?= $id; ?>">
            <input type="hidden" name="date" value="<?= date('Y-m-d H:i:s') ?>">
            <textarea  id="content" name="content" class="form-control" rows="3" placeholder="Enter your comment..." required></textarea>
            <p class="error text-center alert alert-danger hidden"></p>
        </div>
        <div class="addButton col-md-12">
            <button class="btn" type="submit" id="add" name="add">
                <span class="glyphicon glyphicon-plus"></span> SEND
            </button>
        </div>
    </div>
    </form>      
</div>

control.php:

//ADD COMMENT
if ( isset($_POST['add']) ) {
$id = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content'];

$sql= "INSERT INTO posts (uid, content, date) VALUES ('$id', '$content', '$date')";

if (!$mysqli->query($sql)) {
 header("location: error.php");
}
}

使用Javascript:

$("#add").click(function() {

var formData = {
    'name': $('#content').val()
    };


    $.ajax({
        type: 'post',
        url: 'control.php',
        data: formData,
        success: function(data) {
            if ((data.errors)){
                $('.error').removeClass('hidden');
                $('.error').text(data.errors.name);
            }
            else { 
                $('.error').addClass('hidden');
                $('#table').prepend("<div class='item" + data.id + " mess'><div class='btn-group-sm'><button class='edit-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-pencil'></span></button><button class='delete-modal btn btn-circle' data-id=" + data.id + " data-name=" + data.name +"><span class='glyphicon glyphicon-trash'></span></button></div><article class='myMessage'><p>" + data.name + "</p></article></div><div class='clear' style='clear: both;''></div>");
            }
        },

    });
    $('#content').val('');

});

2 个答案:

答案 0 :(得分:1)

您只发送此$_POST数据:

var formData = {
    'name': $('#content').val()
};

哪个应该只会导致$_POST['name'] =&gt; VALUE

但是你正在阅读$_POST['content'];和其他变种。 您还要检查AJAX未发送的$_POST['add']。 更改密钥,用于在一侧发送/读取数据,并尝试将其他键/值添加到数据中,例如

var formData = {
    'add': 'yes',
    'content': $('#content').val(),
    'uid': SOMEVALUE,
    'date': SOMEVALUE
};

uiddate是你可能想要在control.php中动态创建的东西。但是,请不要从$_POST

读取它们

附加:使用与您的用例匹配的示例进一步阅读:https://scotch.io/tutorials/submitting-ajax-forms-with-jquery

答案 1 :(得分:0)

User.includes(:user_setting)
    .where.not(user_settings: { id: nil })
    .where(user_settings: { status: 'active' })