繁体   English   中英

Ajax POST调用不发送或提交任何数据

[英]Ajax POST call doesn't send or submit any data

我试图使我的提交按钮无需重新加载即可将数据发送到我的PHP文件,但是,当我使用此调用时,它不发送任何数据,并且都不保存在数据库中。

$('#formSubmitData').on('submit', function(event) {
    event.preventDefault();
    var msg = $('#textareaSubmitData').val();
    $.ajax({
        url: 'searchData.php', //this is ALSO how the text is being send to the database to be retrieved later on.
        type: 'POST',
        data: {message:msg},
        success: function(data) {
            console.log(data);
            data = msg;
            alert(data);
        }
    });
});

警报显示正确的值,但是在我的数据库中,行保持为空。

PHP代码如何:

    if (isset($_POST['submit']) && $_SERVER['REQUEST_METHOD'] === "POST") {
        include_once 'dbConn.php';

        $name = $_SESSION['userName'];
        $msg = $_POST['textareaSubmitData'];        

        $stmt = $conn->prepare("INSERT INTO messages (name, message) VALUES (?, ?)");
        $stmt->bind_param('ss', $name, $msg);

        $name = $_SESSION['userName'];
        $msg = $_POST['textareaSubmitData'];
        $stmt->execute();   

        $conn->close();
        $stmt->close();

    } else {
        header('Location: index.php?send=failure');
        exit();         
    }
}

认为有两个问题,首先是您需要确保要发送的数据是对象,而不仅仅是值...

data: { textareaSubmitData: msg },

第二个是当您尝试处理数据时,第一行是...

if (isset($_POST['submit']) && $_SERVER['REQUEST_METHOD'] === "POST") {

因此,这是在“提交”中寻找一些POST数据-您不会发送。 因此,当您(现在)仅发送“ textareaSubmitData”时-检查是否已设置...

if (isset($_POST['textareaSubmitData']) && $_SERVER['REQUEST_METHOD'] === "POST") {

您正在发送数据中的提交按钮的值。 您需要将表单数据发送到服务器。

$('#formSubmitData').on('submit', function(event) {
    event.preventDefault();
    var data = new FormData(this);
    $.ajax({
        url: 'searchData.php', //this is ALSO how the text is being send to the database to be retrieved later on.
        type: 'POST',
        data: data,
        success: function(data) {
            data = msg;
            alert(data);
        }
    });
});

同样,使用浏览器的调试功能,明确地“查看(!)”正在发送的内容。 当AJAX调用结束时,您可以看到 HTML POST已完成–因此,您可以确切地看到URL是什么,以及正在提供(或不提供)什么数据。

在主机方面,您还可以执行诸如print_r($_POST)以便再次查看 PHP收到了什么。

我的经验是,一旦您看到发生了什么,调试就非常快速和容易。 猜测无济于事。

暂无
暂无

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

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