在 PHP 中从数据库中检索数据并在同一页面上的 JQuery 中显示它们

Posted

技术标签:

【中文标题】在 PHP 中从数据库中检索数据并在同一页面上的 JQuery 中显示它们【英文标题】:Retrieve data from database in PHP and display them in JQuery on the same page 【发布时间】:2013-04-23 03:20:16 【问题描述】:

今天我需要一些关于我的一项工作的帮助。我试图在 JQuery 中显示我在 php 中从我的数据库中检索到的一些数据。

由于某些原因,我需要在 JQuery 中显示数据...

我的 PHP 和我的 JQuery 在同一个页面index.php,但我的问题是 我的 ajax 不会显示我的数据 strong> 并且没有出现错误,所以我不知道我的错误到底在哪里。

这是我的代码:

<?php
    require 'inc/db-connect.php';

    $title = array();

    try
        $sql   = "SELECT * FROM events";
        $req   = $db->query($sql);  
    catch(PDOException $e)
        echo 'Erreur: '.$e->getMessage();
    

    while($res = $req->fetch())
        array_push($title, $res['title']);
    

    echo json_encode($title);

    $req->closeCursor();
?>

<!DOCTYPE html>

<html lang="fr">
    <?php include('inc/head.html'); ?>

    <body>
        <div id="stage">

            /** 
            * ALL MY HTML GOES HERE 
            **/

        </div>
        <!-- END STAGE -->

        <script type="text/javascript">
            $(document).ready(function()
                $.ajax(
                    data: "",
                    dataType: 'json',
                    success: function(data)
                        console.log(data);
                    ,
                    error: function()
                        console.log('Failed to load data');   
                    
                );
            );
        </script>
    </body>
</html>

所以当我加载我的页面时,我的 JQuery 会执行 "console.log('Failed to load data')",这意味着有错误但我找不到。 p>

有人可以帮助我吗?

谢谢, 安托

编辑 1:

我的 PHP 请求似乎没有问题,因为 echo 显示了我从数据库中检索到的数据。显然错误来自我的 ajax 请求。

我已经在 'index.php' 上设置了 URL 参数,但也没有用。

编辑 2:

经过一些研究,似乎不可能在同一页面上发出 PHP 请求和 ajax 请求。所以我会尝试其他的...

【问题讨论】:

在您的浏览器中单击鼠标右键并查看您的脚本生成的源代码。您应该立即发现问题。 这令人困惑。 $.ajax 没有要获取的 url。 ajax 函数中的 URL 选项在哪里?这是否可以在不传入 URL 的情况下获取数据? 我在这篇文章中读到,如果我在同一页面上执行我的 ajax 请求,我可以让 url 参数为空。 ***.com/questions/7561569/… 我尝试将 url 参数设置为 'index.php' 但这也不起作用:\. @nvanesch - 是的,PHP 和 JQuery 在同一个文件中。 【参考方案1】:

你目前正在做的是:

您正在创建一个如下所示的输出:

"your json is": "here"
<html>
  ... rest of html
  <script> doing an ajax request to get the json </script>
  ...
</html>

现在有多个问题。

html输出前有json 有一个 ajax 调用试图获取您刚刚输出的文件, 但是json后面有html,所以看不懂json

要解决此问题,您可以将其放入 2 个不同的文件中。

getmyjson.php

<?php
    require 'inc/db-connect.php';

    $title = array();

    try
        $sql   = "SELECT * FROM events";
        $req   = $db->query($sql);  
    catch(PDOException $e)
        echo 'Erreur: '.$e->getMessage();
    

    while($res = $req->fetch())
        array_push($title, $res['title']);
    

    header('Content-type: application/json');
    echo json_encode($title);

    $req->closeCursor();
    exit();

index.php

<html lang="fr">
    <?php include('inc/head.html'); ?>

    <body>
        <div id="stage">

            /** 
            * ALL MY HTML GOES HERE 
            **/

        </div>
        <!-- END STAGE -->

        <script type="text/javascript">
            $(document).ready(function()
                $.ajax(
                    url: "getmyjson.php"
                    data: "",
                    dataType: 'json',
                    success: function(data)
                        console.log(data);
                    ,
                    error: function()
                        console.log('Failed to load data');   
                    
                );
            );
        </script>
    </body>
</html>

或者您可以将其放在一个文件中并使用条件将其拆分

<?
if(isset($_GET['getmyjson']))

  // output json (incl header)
  exit();

else // why an else when you already did an exit.. just to be safe when you or someone else is modifying the code

  // output your main page with the ajax script that calls "url: '?getmyjson=true'"

【讨论】:

谢谢!确实,有 2 个不同的文件就没有问题了;)。【参考方案2】:

将内容的头部设置为json类型...这里是设置头部类型的示例。

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

任何格式错误的 JSON 都会被拒绝并引发解析错误。

【讨论】:

显然错误来自我的 ajax 请求,因为 PHP 回显显示了我应该检索到的数据。

以上是关于在 PHP 中从数据库中检索数据并在同一页面上的 JQuery 中显示它们的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax从mysql DB检索和打印数据到文本框(如何在同一个php页面中使用它两次)

如何在 JSP 页面中从数据库中检索和显示图像?

如何在 PHP 中从 Parse 中检索图像文件?

我希望我的 php 表单提交数据并在同一页面但不同的选项卡上重定向

在一个云功能中从 firebase 数据库中检索多个数据

通过 PHP 检索 GET 变量,在同一脚本上发送到 SWF?