2015-05-28 2 views
0

Я пытаюсь рисовать таблицы БД с помощью PHP PDO, который я успешно сделал, используя следующий код:JSON из PHP в JS файл

test.php

<?php 
$dbh = new PDO("mysql:host=localhost;dbname=test", "root", ""); 
$statement=$dbh->prepare("SELECT * FROM pdotable"); 
$statement->execute(); 
$results=$statement->fetchAll(PDO::FETCH_ASSOC); 
$json=json_encode($results); 

echo $json; 

?> 

мне нужно взять результаты в диаграмма JS код, который его массив данных в этом коде:

initCharts: function() { 
     if (Morris.EventEmitter) { 
      // Use Morris.Area instead of Morris.Line 
      dashboardMainChart = Morris.Area({ 
       element: 'sales_statistics', 
       padding: 0, 
       behaveLikeLine: false, 
       gridEnabled: false, 
       gridLineColor: false, 
       axes: false, 
       fillOpacity: 1, 

       data: 

       [{ 
        period: '2011', 
        sales: 1400, 
        profit: 400 
       }, { 
        period: '2011 Q2', 
        sales: 1100, 
        profit: 600 
       }, { 
        period: '2011 Q3', 
        sales: 1600, 
        profit: 500 
       }, { 
        period: '2011 Q4', 
        sales: 1200, 
        profit: 400 
       }, { 
        period: '2012 Q1', 
        sales: 1550, 
        profit: 5 
       }], 


       lineColors: ['#399a8c', '#92e9dc'], 
       xkey: 'period', 
       ykeys: ['sales', 'profit'], 
       labels: ['Sales', 'Profit'], 
       pointSize: 0, 
       lineWidth: 0, 
       hideHover: 'auto', 
       resize: true 
      }); 

     } 
    }, 

Как я заменить data : [json] с JSON из результата PHP?

ответ

0

вам нужна только эта json_encode функция

это принимает массив в качестве параметра и возвращает строку JSON, который вы можете вставить внутри JS код простого использование эха-функции

код JS должен вставить в PHP файл и не во внешних JS

1

в PHP файла после закрытия тега вам нужно написать JS часть, как это

<script type="text/javascript" charset="utf-8"> 
var data = <?php echo json_encode($results); ?>; 
</script> 

Be caref ul с точкой с запятой. Просто нужно исправить небольшой скрипт JS, но я думаю, вы можете это сделать.

+0

И как импортировать файл PHP в JS? и каков правильный код для замены «данных: [JSON]»? – TonalDev

+0

@TonalDev Что-то вроде этого: 'функция (** data_from_php **) { если (Morris.EventEmitter) { dashboardMainChart = Morris.Area ({//// данные: ** data_from_php **, /// /}); } }, ' –

1
// test.php 
$dbh = new PDO("mysql:host=localhost;dbname=test", "root", ""); 
$statement=$dbh->prepare("SELECT * FROM pdotable"); 
$statement->execute(); 
$results=$statement->fetchAll(PDO::FETCH_ASSOC); 
$json=json_encode($results); 

header('Content-type: application/json'); 

echo $json; 

//js 
... 
if (Morris.EventEmitter) { 
    //if you use jQuery 
    $.get('/test.php', {}, function(result) { //or use $.getJSON 
     dashboardMainChart = Morris.Area({ 
      ... 
      data: result, 
      ... 

xmlhttp, если вы не используете JQuery

+0

вот код, есть ли проблема в синтаксисе? initCharts: function (data_from_php) { $ .get ('/ test.php', {}, function (result) { // Использовать Morris.Area вместо Morris.Line dashboardMainChart = Morris.Площадь ({ данные: результат, }); }); } }, – TonalDev

+0

$ .get ('/ test.php', {}, function (result) {// здесь в значении результата будут данные из test.php} –

+0

попытайтесь добавить этот код на страницу <тип скрипта = "text/javascript" charset = "utf-8"> $ .get ('url_for_test.php', {}, function (result) {alert (result);} –

1

Вы должны были бы эхо из типа контента, так что браузер видит возвращать данные и принимать в формате JSON.

echo ('Content-type: application/json'); 
$json = json_encode($results); 
echo $json; 

Я обычно открыть консоль Google, или поджигатель Firefox, чтобы увидеть вкладку ответа на вкладке сети, которые вы отправляете. Оттуда вы можете видеть, какие данные вы возвращаетесь с сервера, чтобы проверить, правильно ли вы передаете правильные данные или нет.

Кроме того, вы можете напечатать их в журнале консоли по pluggin

console.log(data); 

В вашем JavaScript для подтверждения того, что вы получаете данные в нужном формате.

Вы можете также взглянуть на какой-нибудь документ db, чтобы вытащить данные именно так, как вам нужно.

Вместо SELECT * FROM pdotable, SELECT период, продажи, прибыль будет делать.

Надеюсь, это поможет.

Смежные вопросы