Я не могу понять, почему мой AJAX не отправляет данные в мой PHP-файл - PullRequest
1 голос
/ 09 июля 2019

У меня проблема с моим Ajax.Кажется, он не отправляет данные в мой php-файл, хотя он работал правильно 2 дня назад.HTML:

<form id='comment' action='process.php' method="POST">
    <textarea></textarea>
    <button type='submit'>Comment</button> 
</form>

Мой код ajax:

$('#comment').submit(function(event) {

    var form = $(this);
    var method = form.attr('method');
    var url = form.attr('action');

    info = {
        comment: $('textarea').val()
    };

    console.log(method);
    console.log(url);
    console.log(info);

    $.ajax({
        type: method,
        url: url,
        data: info,
        success: function(data){
            alert(data);
        }
    });
    event.preventDefault();
});

Я делаю это для друга и использую точно такой же код Ajax (слегка измененный) на своем веб-сайте иэто работает без нареканий.Я думаю, что самый большой красный флаг здесь - это то, что в моем php-файле у меня есть if-else, который должен отправлять оповещение в случае, если текстовая область пуста, но по какой-то причине он здесь этого не делает, даже если ничего не проходит.Я использовал console.log для всех переменных, чтобы увидеть, верны ли их значения, и они верны.Предупреждение (данные) просто возвращает пустое поле предупреждения.

РЕДАКТИРОВАТЬ: В соответствии с запросом, PHP-код из process.php

<?php
session_start();

include_once 'db_connection.php';
date_default_timezone_set('Europe/Zagreb');

if(isset($_POST['comment'])){

function SQLInsert($id, $date, $komentar, $conn){
$sql = "INSERT INTO comments (user, date, comment) VALUES ('$id', '$date', 
'$comment')";
$conn -> query($sql);
$conn -> close();
}

$id = $_SESSION['username'];
$date = date('Y-m-d H:i:s');
$comment = htmlspecialchars($_POST['comment']);

SQLInsert($id, $date, $komentar, $conn);

} else {
echo '<script>';
echo 'alert("Comment box is empty.");';
echo '</script>';
}
?>

РЕДАКТИРОВАТЬ: Проблема решена, спасибо за помощь всем.

Ответы [ 4 ]

1 голос
/ 09 июля 2019

Вы не получаете оповещение, потому что вы ничего не отображаете как ответ в php файле. Добавьте также функцию вставки вне условия if

 function SQLInsert($id, $date, $komentar, $conn){
    $sql = "INSERT INTO comments (user, date, comment) VALUES ('$id', '$date', 
    '$comment')";

    if($conn -> query($sql)){
        return true;
    }else{
        return false;
    }
    $conn -> close();
}

if(isset($_POST['comment'])){
    $id = $_SESSION['username'];
    $date = date('Y-m-d H:i:s');
    $comment = htmlspecialchars($_POST['comment']);

    $insert = SQLInsert($id, $date, $komentar, $conn);

     //On based on insert display the response. After that you will get alert message in ajax
    if($insert){
        echo 'insert sucess';
        die;
    }else{
        echo 'Error Message';
        die;
    }
}
0 голосов
/ 09 июля 2019
       <form  name="fileInfoForm"  id='comment' method="post"  enctype="multipart/form-data">
<textarea id="textarea"></textarea>
<button type="submit"></button>
</form>

    <script type="text/javascript">
$('#comment').submit(function (e) {
        e.preventDefault();
        var textarea=$('#textarea').val();
   var form=document.getElementById('comment');
        var fd=new FormData(form);
        fd.append('textarea',textarea);
  $.ajax({
            type: "POST",
            enctype: 'multipart/form-data',

            url: 'action.php',
            data: fd,
            dataType: "json",
            processData: false,
            contentType: false,
            cache: false,
            success: function (data) {
alert(data);
            }


        })


});
</script>



in action.php
           $textarea= $_POST['textarea'];
    echo $textarea;
0 голосов
/ 09 июля 2019

Это вот проблема.Вы пытались предоставить «метод»?

  $.ajax({
        **type: method,**
        method : method,
        url: url,
        data: info,
        success: function(data){
            alert(data);
        }
    });

Также, если это не решает проблему.покажи мне консольный вывод

0 голосов
/ 09 июля 2019
<form id='comment' action='process.php' method="POST">
    <textarea></textarea>
    <button id="submit_button">Comment</button> 
</form>

начиная с этого html, вы должны активировать свою функцию как:

$("#submit_button").click(function(e){

Я добавил идентификатор к вашей кнопке для простоты и удалил тип, потому что в этом случае он бесполезен.

Если вы хотите перехватить событие отправки формы, вы должны изменить свой HTML-код на:

<form id='comment' action='process.php' method="POST">
    <textarea></textarea>
    <input type='submit'>Comment</button> 
</form>

и тогда вы можете сохранить тот же JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...