Как получить доступ к файлу JSON без объявления переменной, ссылающейся на него - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над проектом django и хочу получить доступ к файлу JSON для выполнения процесса геолокации с данными из JSON в мой шаблон.

JSON находится в проекте /static/test/data.js

И он имеет следующие данные:

var json= {"count":6,"next":null,"previous":null,"results":[{"title":"Name1","date":"2018-10-02","products":"","categories":"","client_id":{"id":500,"client_id":"3000-3333","title":"Name1","lat":"40.2323","lng":"34.232323","address":"address1","address_no":"","region":"region1","tk":"34343","municipality":"municipality1","department":"department1","description":null,"categories":null,"phone":"2323232332"},"pcategory":"","product_team":""},{"title":Name2....

Мой скрипт в моем шаблоне находится в project / templates / test / test_template_json.html

И он имеет следующий скрипт:

<script>

// Initialize and add the map

function initMap() {
  var map = new google.maps.Map(
      document.getElementById('map'), {
        zoom:8,
        center: new google.maps.LatLng(37.232323,23.72752323239)
      });

//json is the whole document and results is the list with the json objects

for (var x in json.results){
  var client=json.results[x].client_id;
  var location =new google.maps.LatLng(client.lat,client.lng);
  var marker=new google.maps.Marker({
    position:location,
    map:map});
}
}
</script>

Если я использую переменную: var json = {"count": 6, "далее ": ноль, ....};

в моем файле data.js для доступа к моему json, у меня нет проблем.

Но я хочу, чтобы не объявлял var json и все еще имел бы доступмой json в файле test_template_json.html.

Другими словами как мне получить доступ к моему json, если он имеет формат :

{"count":6,"next":null,"previous":null,"results":[{"title":...

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

1 Ответ

0 голосов
/ 24 октября 2018

Наконец, после периода исследования, я нашел решение, которое сработало. Ниже приведены фрагменты кода в Javascript.

Шаг 1) Определите объект XMLHttpRequest и перейдите в open ()Функция path, ссылающаяся на json.

function loadJSON(callback) {   

    var xobj = new XMLHttpRequest();
        xobj.overrideMimeType("application/json");
    // xobj.open('GET', '/static/test/download2.json', true);
    xobj.open('GET', 'path/path..../path', true);
    xobj.onreadystatechange = function () {
          if (xobj.readyState == 4 && xobj.status == "200") {
            // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
            callback(xobj.responseText);
          }
    };
    xobj.send(null);  
 }

Шаг 2) Разобрать ответ от loadJSON с JSON.parse(response), так что теперь у вас есть доступ к данным json через переменную javascript (var actual_JSON).

loadJSON(function(response) {
  // Parse JSON string into object
    var actual_JSON = JSON.parse(response);
    for (var x in actual_JSON){
  var client=actual_JSON[x].client_id;
  var location =new google.maps.LatLng(client.lat,client.lng);
  var marker=new google.maps.Marker({
    position:location,
    map:map});

}
 });

Затем вы можете легко получить доступ к данным с помощью цикла for.

Здесь можно найти полезную статью о загрузке файла json: https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...