2013-04-29 3 views
1

Сегодня мне нужна помощь по одной из моих работ. Я пытаюсь показать в JQuery некоторые данные, которые я получил в PHP, из моей базы данных.Извлечь данные из базы данных в PHP и отобразить их в JQuery на той же странице

Мне нужно, чтобы отобразить данные в JQuery по некоторым причинам ...

Мой PHP и мой JQuery находятся на той же странице, index.php, но моя проблема заключается в том, что мой Аякса вон 't покажу мои данные, и ошибка не появляется, поэтому я точно не знаю, где моя ошибка.

Вот мой код:

<?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 („Не удалось загрузить данные“)» , который означает, что есть ошибка, но я не может найти его.

Кто-нибудь может мне помочь?

Thnx, Antho

EDIT 1:

Кажется, что нет никаких проблем с моей просьбой PHP, потому что эхо отображать данные, которые я извлечь из базы данных. Очевидно, ошибка возникает из моего запроса ajax.

Я установил параметры URL на «index.php», но не работает.

EDIT 2:

После некоторых исследований представляется невозможным, чтобы сделать запрос на PHP и AJAX запрос на той же странице. Поэтому я попробую что-то еще ...

+0

Является ли это в одном файле? – nvanesch

+0

Сделайте правый щелчок в своем браузере и посмотрите исходный код, сгенерированный вашим скриптом. Вы должны сразу выявить проблему. –

+1

Это сбивает с толку. У $ .ajax нет URL-адреса для извлечения. – Imperative

ответ

1

Что вы сейчас делаете это:

вы создаете вывод, который выглядит следующим образом:

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

В настоящее время существует несколько проблем.

  • Существует JSON перед HTML вывода
  • есть Ajax вызов, который пытается получить файл, который вы только выводимый, но есть HTML после JSON, поэтому он не понимает 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'" 
} 
+0

Спасибо! Действительно, с двумя разными файлами больше нет проблем;). – Anthodpnt

0

Задайте заголовок содержимого типу json ... Вот пример настройки типа заголовка.

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

Любой отклоненный JSON отклоняется и возникает ошибка синтаксического анализа.

+0

Очевидно, ошибка возникает из моего запроса ajax, потому что эхо-файл PHP отображает данные, которые я извлекаю, как следует. – Anthodpnt