2014-11-03 3 views
1

Итак, у меня есть этот файл csv (файл csv может сидеть на стороне сервера предпочтительно, но еще не решил). Скорее всего, пользователю будут представлены варианты выбора из этих файлов csv из раскрывающегося меню. Затем, после выделения определенного файла, пользователь нажимает «вводить», тогда этот выбранный CSV-файл должен быть прочитан в javascript как массив. Итак, как это сделать ??? : -Как преобразовать данные CSV в объект JSON

Мой вопрос находится на линии How to pass variables and data from PHP to JavaScript?

___csv_file____

Class,  Subclass,   Company, Product, 
Chocolate, Wafer chocolate, Nestle, KitKat, 
Chocolate, White chocolate, Nestle, Milkybar, 
Chocolate, White chocolate, Nestle, Milkybar, 
Chocolate, Caramel chocolate, Nestle, BarOne, 
Chocolate, Milk chocolate,  Nestle, Nestle Milk chocolate, 
Chocolate, Milk chocolate,  Nestle, Nestle Milk chocolate, 
Chocolate, Milk chocolate,  Nestle, Nestle Milk chocolate, 
Chocolate, Milk chocolate,  Nestle, Nestle Milk chocolate, 
Chocolate, Milk chocolate,  Cadbury, Dairy milk, 

Для того, чтобы прочитать его вручную это то, что было сделано. Но, как вы можете видеть, что есть все csv_data жёстко, но я хотел бы, чтобы она автоматизирована (т.е. получить сгенерированные путем чтения из файла CSV)

root = { 
"name": "Chocolate", "tag":"class", 
"children": [ 
    { 
    "name": "Wafer", "tag":"subclass", 
    "children": [ 
    { 
     "name": "Nestle", "tag":"company", 
    "children": [ 
     {"name": "KitKat", "tag":"product"} 
    ] 
    } 
    ] 
    }, 

    { 
    "name": "White", "tag":"subclass", 
    "children": [ 
    { 
     "name": "Nestle", "tag":"company", 
    "children": [ 
     {"name": "Milkybar", "tag":"product"} 
    ] 
    } 
    ] 
    }, 

    { 
    "name": "Caramel", "tag":"subclass", 
    "children": [ 
    { 
     "name": "Nestle", "tag":"company", 
    "children": [ 
     {"name": "BarOne", "tag":"product"} 
    ] 
    } 
    ] 
    },  
    { 
    "name": "Milk", "tag":"subclass", 
    "children": [ 
    { 
     "name": "Nestle", "tag":"company", 
    "children": [ 
     {"name": "Nestle Milk", "tag":"product"} 
    ] 
    }, { 
     "name": "Cadbury", "tag":"company", 
    "children": [ 
     {"name": "Dairy Milk", "tag":"product"} 
    ] 
    } 
    ] 
    } 




] 
}; 

Сейчас проблема заключается в том, что я хочу JavaScript просто прочитайте этот файл csv из локального местоположения. Но можно ли прочитать CSV-файл в такой сложный размерный массив в JAVASCRIPT?

+0

* «Для того, чтобы прочитать его вручную, это то, что было сделано http://jsfiddle.net/5Lv8gkqv/» * Поместите соответствующий код (и * только * соответствующий код) ** в ** вопрос, не просто ссылку. Это одна из основ вопросов и ответов на SO. –

+0

Акцент делается на ** соответствующем коде **. Даже ваши ссылки содержат много несвязанного d3-кода. – Sirko

+1

Во-первых, я уверен, что Javascript не может получить доступ к локальным файлам по какой-либо причине, поскольку это кажется огромным риском для безопасности. Во-вторых, вам нужно будет получить CSV-строку из элемента Server Side и передать ее на ваш javascript. В-третьих, вам нужно будет создать функцию для ручного анализа данных в объекте. – Nunners

ответ

1

Возможные установки:

PHP веб-сервер (или NodeJS сервер - мой личный фаворит)

Возможные рабочие:

  • страница загрузки PHP для CSV файла/или загрузить на FTP/SSH
  • csv находится на сервере
  • php-страница с параметром datafromid = csvfile обеспечивает преобразование данных из csv в json .. (если файл csv не содержит t оо много строк, прочитайте его в php-массив и выплюнете его с помощью json_encode(), получив каждую строку (fgetcsv()) и добавив подвариант к вашему полному массиву)
  • в зависимости от того, как вы предоставляете данные d3, используйте ajax для доступа к этому PHP-страницу, чтобы получить доступ к JSON или включить его в страницу (я думаю, загрузив ее с помощью AJAX, доступ к файлу из браузера, где страница лежит, лучше - вы можете использовать jQuery get())
1

Первый на сервере создайте файл PHP, указав соответствующее имя, например candyData.php, в котором у вас есть:

//code to read your data.csv 
//code which stores the data from the csv into an object $candyData 
$json = json_encode($candyData); 
return $json 

Тогда на стороне клиента с JavaScript, и я буду использовать JQuery:

jQuery.ajax({ 
    url: "http://example.mysite.com/rest/candyData.php", 
    type: "GET", 
    success: function (response) { 
     var candyData = response; 
     //Here you'd put all the code you currently have so you can visualize the data 
    }, 
    error: function (response) { 
     console.log("failed"); 
    } 
}); 
Смежные вопросы