我无法弄清楚为什么我的ajax没有将数据发送到我的php文件

时间:2019-07-09 08:49:32

标签: javascript php jquery ajax

我的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,如果textarea为空,它应该发送警报,但由于某种原因,即使没有任何反应,它也不会在这里这样做。我在所有变量上使用了console.log,以查看它们的值是否正确。警报(数据)仅返回一个空的警报框。

编辑:根据要求,来自process.php的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 个答案:

答案 0 :(得分:1)

您没有收到警报,因为您没有在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;
    }
}

答案 1 :(得分:0)

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

从此html开始,您必须以以下方式触发功能:

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

为简单起见,我为您的按钮添加了一个id,并删除了该类型,因为在这种情况下它是无用的。

如果要捕获表单的Submit事件,则必须将html更改为:

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

然后您可以保留相同的javascript

答案 2 :(得分:0)

这是问题。您是否尝试过提供“方法”?

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

如果这不能解决问题。显示控制台输出

答案 3 :(得分:0)

       <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;