2015-02-25 3 views
-3

У меня есть я файл с именем dump.json формы:Как загрузить локальный файл Javascript

[{"key": "XYZ", "values": [[1424642400000, 28], [1424728800000, 80], [1424815200000, 92]]}] 

и, что я хотел бы сделать, это загрузить его как-то в JavaScript под именем переменной histcatexplong:

var histcatexplong = [{"key": "XYZ", "values": [[1424642400000, 28], [1424728800000, 80], [1424815200000, 92]]}]; 

Как я могу это сделать?

+0

Использование Ajax: http://api.jquery.com/jquery.ajax/ –

+1

Используйте [ 'filereader'] (https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications) в сочетании с вводом файла. Это также будет работать без запуска локального веб-сервера. – Mouser

+3

Кроме того, вы, возможно, имели в виду 'json' вместо' jason';) –

ответ

1

Как я уже сказал в своем комментарии, это может быть использовано онлайн и офлайн (не требуется веб-сервер), а XMLHTTPRequest. Обратите внимание, что Filereader поддерживается только в современных браузерах. http://caniuse.com/#feat=filereader

function readSingleFile(evt) { 
 
    var f = evt.target.files[0]; 
 

 
    if (f) { 
 
     var r = new FileReader(); 
 
     r.onload = function(e) { 
 
\t  var contents = e.target.result; 
 
     document.querySelector("div").innerHTML= "Got the file.n" 
 
       +"name: " + f.name + "n" 
 
       +"type: " + f.type + "n" 
 
       +"size: " + f.size + " bytesn" 
 
       + "starts with: " + contents 
 
      //store it as JSON 
 
      histcatexplong = JSON.parse(contents); 
 
     } 
 
     r.readAsText(f); 
 
    } else { 
 
     alert("Failed to load file"); 
 
    } 
 
    } 
 

 
    document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
<input type="file" id="fileinput" /> 
 
<div></div>

В качестве примера того, что я имел в виду.

+0

Это классно, поэтому до – Sigismundus

0

Я бы просто послал запрос GET без параметров в файл .json. Обратите внимание, что следующий пример кода не будет работать в IE5/IE6, посмотрите на this answer для более кросс-браузерного решения и должен запускаться на сервере (например, localhost) из-за same origin policy. Грубая идея:

var histcatexplong; 
var xhReq = new XMLHttpRequest(); 
xhReq.open("GET", "dump.json", true); 
xhReq.send(null); 
xhReq.onreadystatechange=function() 
{ 
    if (xhReq.readyState==4 && xhReq.status==200) 
     histcatexplong=JSON.parse(xhReq.responseText); 
} 
+0

Мне это нравится, но он не работает на моем Chrome. Можете ли вы дважды проверить этот ответ? – user706838

+0

Он должен работать, пока вы запускаете его на локальном хосте или сервере (он не работает, если вы запускаете его как файл из-за [той же политики происхождения] (https://developer.mozilla.org/en-US/ docs/Web/Security/Same-origin_policy). – nico

+0

Я бы не рекомендовал использовать синхронный XMLHttpRequest, как если бы подключение к Интернету отключилось на полпути, оно может повесить некоторые браузеры. Однако я не понимаю, почему, в частности, этот код должен –

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