Как передать данные в d3.json ()

1

В настоящее время код работает отлично. Просто я хочу, чтобы для каждого пользователя была другая древовидная диаграмма. Поэтому я должен передать $ user в getData.php, чтобы данные json создавались в соответствии с этим пользователем, а затем с диаграммой. $ user используется в выражениях mysql select в getData.php для выбора данных из базы данных, и эти выбранные данные затем преобразуются в json.

Скажите, пожалуйста, как мне передать $ user в качестве обратного вызова, в котором функция d3. Я из своих ресурсов!

var queryString = window.location.search;
var url = "d3js/getData.php" + queryString;
d3.json(url, function(error, treeData) {
    console.log(treeData)
    root = treeData[0];
    update(root);
});

В конце getData.php есть

header('Content-Type: application/json');
echo json_encode($tree);

Поэтому я думаю, что выход php файла - это данные json

  • 0
    Какова структура вашего getData.php?
  • 0
    Это древовидная структура.
Показать ещё 4 комментария
Теги:
d3.js

5 ответов

1
d3.json("api.php", function(error, data) {
data.forEach(function(d) {
   loop your datas;
});

Подробнее смотрите здесь

https://phpro.org/tutorials/Creating-Graphs-With-PHP-MySQL-D3JS.html

https://nyquist212.wordpress.com/2014/04/09/d3-js-live-dashboard-example/

http://www.d3noob.org/2013/02/using-mysql-database-as-source-of-data.html

  • 0
    Это действительно работает с api.php?
  • 0
    Вот синтаксис: если у вас есть рабочий URL, то вы должны поместить абсолютный URL в этом месте
1

Функция d3.json используется для получения данных из json файла, который не работает для файлов PHP, который возвращает ответ, отличный от json-формата.

Вы можете использовать API-интерфейс d3-request. При обратном вызове вы можете отобразить график: Пример:

var url = "d3js/getData.php" + window.location.search;
d3.request(url)
.get(function(error, treeData) {
   console.log(treeData)
   root = treeData[0];
   update(root);
});

Ссылка: https://github.com/d3/d3-request/blob/master/README.md#request

Для получения дополнительной информации - https://github.com/d3/d3/blob/master/API.md

  • 0
    1. В функции обратного вызова вы можете анализировать данные JSON. 2. В зависимости от типа запроса вы должны вызвать соответствующий метод запроса (post, get ...)
  • 0
    Если файл PHP возвращает данные в кодировке JSON, то d3.json может вызвать файл php. У меня все равно работает.
0

Вы также можете использовать эту функцию для получения карт ваших значений:

 d3.layout.stack()(['value'].map((value) => {
  return data.map((d: any) => {
    return { x: obj[d.xAxis], y: d.value };
  });
}));

Вы также можете увидеть больше примеров here-

https://github.com/amanjain325/angular-d3-charts

0

Код, который я использую:

function upL(l_id) {
d3.json("lsel.php?l_id=" + l_id, function(error, gr) {
     if (error) {
        return console.error(error)
    } else
        console.log(gr);
        draw(gr)
}).header("Content-Type", "application/x-www-form-urlencoded")//this bit might be necessary
}

function draw(gr){create graph...}

(l_id - пользовательская переменная)

Итак, ваш взгляд выглядит хорошо, попробуйте добавить тип контента (.header(...)), и если treeData будет зарегистрирован на консоли, проблема может быть в том, как вы обращаетесь к нему.

0

Для начала вам нужно экспортировать свои данные в json файл, например data.json

d3.json() ожидает, что json файл не является файлом php.

 d3.json("data.json", function(error, data) {
      if (error) throw error;
      ...
});
  • 0
    Я все еще думаю, что это должен быть файл json, который вы называете. Проверьте этот вопрос на stackoverflow.com/questions/22325819/d3-js-get-json-from-url
  • 0
    Мой код работает нормально. В настоящее время я предоставляю $ user = 1; в getData.php, который также содержит код mysql для извлечения данных. Но так как мои данные будут в соответствии с пользователем, я должен передать пользовательские данные в getData.php
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню