简体   繁体   English

Ajax发布到数据库不发布任何内容

[英]Ajax post to database doesn't post anything

I know this has been asked before, but I can seem to find an solution that fixes the problem in my case. 我知道以前已经有人问过这个问题,但是我似乎可以找到解决该问题的解决方案。 I'm trying to post data to a Mysql database with an an Ajax post 我正在尝试通过Ajax发布数据到Mysql数据库

HTML HTML

<form action="" method="post">
    <input type="text" id="message" name="message">
    <<input type="submit" value="Send" id="submit">
</form>

Ajax post 阿贾克斯邮报

$(document).ready(function(){
    $("#submit").click(function(){
        var message = $("#message").val();
        var data = "message=" + message;
        console.log(data);
        if(message != ''){
            console.log(data);
            $.ajax({
                type: "POST",
                url: "classes/messages.php",
                data: data,
                succes: function(){
                    alert("succes");
                }
            });
        }
        return false;
    });
});

PHP code PHP代码

class messages{
    function getMessages(){
        $con = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
        $message = $_POST['message'];

        mysqli_query($con, "INSERT INTO messages(message, time, user_id)
                    VALUES('$message', 'now()', '12')")or die(mysqli_error($con));
        mysqli_close($con);
    }
}

$messages = new Messages();
$messages->getMessages();    

Everytime I submit the form nothing happends, not even an php error appears. 每次我提交表单时,都不会发生任何事情,甚至不会出现php错误。 I've checked the Ajax post and both console.logs return the correct value, so I think the variable is reachable. 我已经检查了Ajax帖子,并且两个console.logs都返回正确的值,所以我认为该变量是可访问的。

I've also checked if the php function is executed at all, which is the case. 我还检查了是否完全执行了php函数,情况就是这样。

You could try this shorthand method instead: 您可以改用以下速记方法:

var message = "message=" + $("#message").val();
$("#submit").on("click", function(ev)){
    $.post("classes/messages.php", {message: message}, 'json').done(function (data, textStatus, jqXHR) {
        console.log("succes");       
    }).fail(function () {
        console.log("Fail");
        return false;
    }).always();
}

Use on it's better and recommended than just trigger the function on the selector itself. 使用on它的更好,建议不仅仅触发选择器本身的功能。

Try this 尝试这个

    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>
    $(document).ready(function(){

        $("#submit").click(function(){
            var message = $("#message").val();
            var data = "message=" + message;
            console.log(data);
            if(message != ''){
                console.log(data);
                $.ajax({
                    type: "POST",
                url: "classes/messages.php",
                    data: data,
                    success: function(){
                        alert("succes");
                    }
                });
            }
            return false;
        });
    });
    </script>
    </head>
<body>
    <form action="" method="post">
        <input type="text" id="message" name="message">
        <input type="button" value="Send" id="submit">
    </form>
</body>
    </html>

and

<?php
class messages{
    function getMessages(){
        $con = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
        $message = $_POST['message'];

        mysqli_query($con, "INSERT INTO messages(message, time, user_id)
                    VALUES('$message', 'now()', '12')")or die(mysqli_error($con));
        mysqli_close($con);
    }
}

$messages = new Messages();
$messages->getMessages();    

Basically I changed input type='button' from `'submit' . 基本上,我从'submit'更改了input type='button' '。 Since it was a submit button, the ajax call was never done, instead the form was submitting. 由于它是一个提交按钮,所以从未执行过ajax调用,而是提交了表单。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM