Ajax POST call не отправляет и не отправляет данные - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь заставить мою кнопку отправки отправлять данные в мой 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();         
    }
}

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Вы отправляете значение кнопки отправки в данных.Вам необходимо отправить данные формы на ваш сервер.

$('#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);
        }
    });
});
0 голосов
/ 12 ноября 2018

Также - окончательно, "посмотрите на (!)" что отправляется, используя функции отладки вашего браузера.Когда AJAX-вызов завершается, вы можете увидеть HTML POST, который выполняется, - таким образом, вы можете точно увидеть, что такое URL, и какие именно данные (или нет) предоставляются.

На стороне хоста вы также можете делать такие вещи, как print_r($_POST), чтобы вы могли еще раз увидеть , что получил PHP.

Мой опыт таков, что однаждывы можете увидеть что происходит, отладка очень быстрая и простая.Принимая во внимание, что угадывание никуда не ведет.

0 голосов
/ 12 ноября 2018

Подумайте, есть 2 проблемы, во-первых, вам нужно убедиться, что отправляемые данные являются объектом, а не просто значением ...

data: { textareaSubmitData: msg },

Во-вторых, когда вы пытаетесь обработать данные, ваша первая строка ...

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

Итак, он ищет некоторые данные POST в 'submit' - которые вы не отправляете. Так как вы (сейчас) просто отправляете 'textareaSubmitData' - проверьте, установлено ли это ...

if (isset($_POST['textareaSubmitData']) && $_SERVER['REQUEST_METHOD'] === "POST") {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...