【问题标题】:Ajax & PHP - Fetching Mysql table with Ajax not being printedAjax & PHP - 获取未打印 Ajax 的 Mysql 表
【发布时间】:2014-03-30 14:03:23
【问题描述】:

我正在开发一个评论系统。我需要能够发帖(插入数据库),并且帖子也必须自动在网站上可见。

我有两个 PHP 文件,一个是主页 (index.php),另一个是连接到数据库并获取 (connect_to_database.php)。

从 connect_to_database.php 我连接到数据库,并尝试获取行。 然后 Ajax 脚本应该将信息打印到一个 div 中。

我可以发帖,并且可以检查信息是否已添加到数据库中,但我没有看到任何打印的数据库行。

问题可能出在 Ajax 脚本上吗?

感谢您的帮助,

connect_to_database.php

...
$connect=mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database);
//$connect=mysqli_connect("localhost", "commenter","phyBq2JT", "udb_commenter" );

// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$db_select = mysqli_select_db($connect,'udb_commenter');
$sql="SELECT * FROM $TABLE_NAME";
$result=mysqli_query( $connect, $sql);


$array = mysqli_fetch_row($result);
echo json_encode($array);
?>

index.php 这里只是 Ajax 代码的一部分。在它上面,我有一个与数据库的有效连接。

<div class="output-post" id="output">
                        <script language="JavaScript" id="print" type="text/javascript" src="jquery.js">
                            $(function ()
                            {
                                $.ajax({

                                    url: 'connect_to_database.php',
                                    data: "",
                                    dataType: 'json',
                                    success: function(data)
                                    {
                                        var id = data[0];
                                        var name = data[1];
                                        var email = data[2];
                                        var type = data[3];
                                        var message = data[4];
                                        var date = data[5];

                                        $('.output-post').html("<b>id: </b>"+id+"<b> name: </b>"+name+email+type+message+date);
                                    }

                                });
                            });

                        </script>
</div>

sql表:

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL,
  `email` varchar(60) NOT NULL,
  `type` varchar(40) NOT NULL,
  `message` text NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
);

【问题讨论】:

  • console.log(data) 说什么?
  • 在哪里可以找到 console.lo(data)?
  • console.log() 将写入浏览器的 JavaScript 控制台。您可以访问此控制台。我不知道你用的是哪个浏览器,但你可以尝试按 F12 打开它。
  • 在进行以下更改后:语法错误:使用 //@ 来指示 sourceMappingURL 杂注已被弃用。使用 //# 代替 jquery.min.js:1 错误:ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js 被分配了一个 //# sourceMappingURL,但在函数体 example.de:34 之后已经有一个 SyntaxError: missing }
  • 将你的 javascript 代码移动到一个自己的

标签: php jquery mysql ajax


【解决方案1】:

我认为您的成功方法中的“数据”不是一行,而是行。所以你必须一次访问一行或使用“foreach”。

<div class="output-post" id="output">
                        <script language="JavaScript" id="print" type="text/javascript" src="jquery.js">
                            $(function ()
                            {
                                $.ajax({

                                    url: 'connect_to_database.php',
                                    data: "",
                                    dataType: 'json',
                                    success: function(data)
                                    {
                                        jQuery.each(data.rows, function() {
                                           var id = this[0];
                                           var name = this[1];
                                           var email = this[2];
                                           var type = this[3];
                                           var message = this[4];
                                           var date = this[5];

                                           $('.output-post').append("<b>id: </b>"+id+"<b> name: </b>"+name+email+type+message+date);
                                        });
                                    }

                                });
                            });

                        </script>
</div>

还将您的 php 代码更改为以下内容:

$array = mysqli_fetch_row($result);
echo "{'rows':" . json_encode($array) . "}";
?>

【讨论】:

  • 仍然没有打印任何内容。我正在使用代码进行行打印,看看是否可以打印任何内容。
  • 您可以直接在另一个浏览器窗口中调用connect_to_database.php 并将您将获得的json 发送给我们。你可以从这个json中删除数据,我们只需要它的结构。
  • 我得到的是:["27","name","mail@gmail.com","new_post","你好,这是我。我是评论者的创建者。\r \n请随时发表或评论。","2014-03-30 15:12:34"]
  • 我只是在改变并确保我按照你的建议做了一切。 json 输出还是一样,只有第一行,我还是没有看到任何打印出来的东西。
  • 好的,你能用“alert(”替换“$('.output-post').append(”吗?
猜你喜欢
  • 2014-06-01
  • 2013-09-10
  • 1970-01-01
  • 2013-08-28
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多