dsyk33753 2013-04-29 04:45
浏览 67
已采纳

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

Today I need some help concerning one of my work. I'm trying to display, in JQuery, some data I retrieved, in PHP, from my database.

I need to display the data in JQuery for some reasons...

My PHP and my JQuery are on the same page, index.php, but my problem is that my ajax won't display my data and no error appears so I don't know exactly where is my mistake.

Here is my code:

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

So when I load my page, my JQuery does the "console.log('Failed to load data')" which means there is an error but I can't find it.

Somebody can help me please ?

Thnx, Antho

EDIT 1:

It seems there is no problem with my PHP request because the echo display the data I retrieve from the database. Apparently the error comes from my ajax request.

I've set the URL parameters on 'index.php' but doesn't work neither.

EDIT 2:

After some researches it seems impossible to make a PHP request and an ajax request on the same page. So I'll try something else...

展开全部

  • 写回答

2条回答 默认 最新

  • douju1365 2013-04-29 05:23
    关注

    What you are currently doing is this:

    you are creating an output that looks like this:

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

    Now there are multiple problems.

    • There is json before the html output
    • there is an ajax call that tries to get the file you just outputted, but there is html after the json, so it does not understand the json

    To fix this you could put it in 2 different files.

    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>
    

    or you could put it in one file and use conditions to split it up

    <?
    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'"
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部