【问题标题】:GET Data from page disappears when using AJAX使用 AJAX 时从页面获取数据消失
【发布时间】:2020-04-16 00:42:36
【问题描述】:

有点像使用 PHP/Ajax/SQL 的新手。

我目前在一个小项目中工作,我们被要求使用上述语言创建一个 Facebook 风格的网站。我正在尝试创建页面,用户可以在其中查看每个帖子中的单个帖子和 cmets。用户还可以在同一页面上发布 cmets。我还有一个数据库来存储项目所需的不同详细信息(帖子、用户详细信息、cmets 等)

从显示帖子的页面获取的数据通过 GET 方法传递。还有一个 ajax 函数用于将评论数据插入我的数据库。问题是,每次我尝试将数据插入数据库(通过AJAX)时,都会出现以下错误:

Notice: Undefined index: blog_title in C:\xampp\htdocs\postpage.php on line 24

我还注意到,当我尝试调用 AJAX 函数时,我通过 GET 方法传递的数据消失了。我该怎么做才能解决这个错误?

通过这里获取post数据(第24行):

    $blog_title = $_GET['blog_title'];

HTML:

    <!DOCTYPE html>
<html>
    <head>
        <title><?=$blog_title?></title>
    </head>

    <body>
        <div class = "details">
            <h2><?=$row['title']?></h2>
            <h3>Published by: <a link href = "<?=$location?>"><?=$row['author_name']?></a></h3>
            <h4>Date Posted: <?=$row['date']?> at <?=$row['time']?></h4>
        </div>
        <br>
        <p>
            <?=$row['content']?>
        </p><br><br>
        <div class = "commentarea">
            <form>
                <label>Commenting as: <?=$my_username?></label><br>
                <textarea rows = "10" cols = "20" id = "comment" required></textarea>
                <button name = "comment" id = "post" onclick="Comment($('#comment').val(), <?=$my_username?>, <?=$blog_title?>)">Submit Comment</button>
            </form>
        <div>

AJAX 功能:

    <script src = "js/jquery.js"></script> 
    <script>
        function Comment(comment, username, title){
        //alert(search + " " + filter);
            $.ajax({
                method:"POST",
                url:"comment.php",
                data:{
                    "comment":comment,
                    "commenter_name":username,
                    "commented_post":title,
                },
                dataType = "json",
                success: function(result){
                    alert("Comment posted.");
                    $("#record").html(result);
                }
            });
        }

    </script>

提前谢谢你!

【问题讨论】:

标签: php html ajax database get


【解决方案1】:

在您的 Ajax 调用中,您将方法指定为 POST。但是在您的 PHP 页面中,您尝试使用 $_GET['blog_title'] 获取请求,这就是您收到未定义变量错误的原因。

您应该使用$_POST$_REQUEST 而不是$_GET。也就是替换

$blog_title = $_GET['blog_title'];

$blog_title = $_POST['blog_title'];

$blog_title = $_REQUEST['blog_title'];

在文档中了解有关 $_REQUEST$_POST 的更多信息。

您可以如下更改您的 ajax 请求。

       $.ajax({
            method:"GET",   //changed method to GET
            url:"comment.php",
            data:{
                "comment":comment,
                "commenter_name":username,
                "commented_post":title,
            },
            dataType = "json",
            success: function(result){
                alert("Comment posted.");
                $("#record").html(result);
            }
        });

【讨论】:

  • 仍然有同样的错误。我应该澄清一下 POST 方法是在另一个 PHP 文件中定义的,即在 Ajax 函数中指定的“comment.php”url。
  • 再次检查您的代码时,您的 ajax 数据中似乎没有名为 blog_title 的参数。请您验证一下。
  • 我没有博客的 ajax 代码。发布博客和访问博客的功能在不同的文件上。 ajax 数据中也没有名为“blog_title”的参数。 'blog_title'参数的数据来自另一个文件,其中php文件使用GET方式传递到上面的代码中。
  • 实际上,无法理解您到底要达到什么目的。无论如何,您可以尝试检查您的 GET 请求中是否有任何内容。尝试使用var_dump($_GET) 打印所有内容。
【解决方案2】:

和Lal回答一样,首先需要转换为GET方法,然后需要声明blog_title参数。

<script src = "js/jquery.js"></script> 
        <script>
            function Comment(comment, username, title){
            //alert(search + " " + filter);
                $.ajax({
                    method:"GET", // Changed method to GET
                    url:"comment.php",
                    data:{
                        "comment":comment,
                        "commenter_name":username,
                        "commented_post":title,
                        "blog_title":title  //You must declare the blog_title parameter here
                    },
                    dataType = "json",
                    success: function(result){
                        alert("Comment posted.");
                        $("#record").html(result);
                    }
                });
            }

        </script>

【讨论】:

  • 仍然有同样的错误。我应该澄清一下 POST 方法是在另一个 PHP 文件中定义的,即在 Ajax 函数中指定的“comment.php”url。
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 2012-09-21
  • 1970-01-01
  • 2019-11-12
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多