2016-08-14 4 views
0

У меня есть программа, использующая фреймворк node.js express. У меня есть файл index.js, который обрабатывает серверную часть вещей. У этого объекта есть объект (latestResults = {}), который хранит объекты json, назначенные временным меткам (latestResults [timestamp] = jsonObj).Использование запроса AJAX GET для получения объекта

В файле с именем visualization.js (client) Я хочу получить доступ к этому объекту. Я хотел использовать запрос AJAX GET, но, честно говоря, я не знаю, как это будет выглядеть, и я не мог найти что-либо в Интернете. Как мог выглядеть URL?

+0

вы можете показать код в файле 'index.js'. как хранятся последние результаты? –

+0

var latestResults = {} он заполняется объектами json, назначенными временным отметкам – Johannes

ответ

0

Имея рафинированный свои знания ога, что просят ОПЫ для Постараюсь ответить так:

Для монтажа отдыха конечной точки для обслуживания клиента с latestResult объекта, который вы должны сделать что-то подобное :

var app = express(); 
app.get('/latestResults', function (req, res) { res.send (global.latestResults); }); 

и для извлечения объекта, который вы можете использовать JQuery (https://api.jquery.com/jquery.get/):

jQuery.get('/latestResults', function (latestResults) { visualize(latestResults); }); 

или angularjs (https://docs.angularjs.org/api/ng/service/ $ http), или, как я предпочитаю, - полис заполнения, так как это уже реализовано в некоторых браузерах (https://github.com/github/fetch)

+0

Я предполагаю, что lastResults хранится как глобальная переменная на стороне сервера. –

+0

Отлично, спасибо! Я попробую это, как только смогу. – Johannes

0

Простой код Ajax будет выглядеть следующим образом:

создать объект JSON данные для отправки с просьбой, если это необходимо.

var data = {}; 
//insert values in data object. 
$.ajax({ 
      url: 'yourUrl', 
      data: data, 
      processData: false, 
      contentType: false, 
      type: 'POST', 
      dataType:'json', 
      success: function(response){ 
       //access response variable sent from server. 
      },error : function(response){ 
      //process error 
      }}); 

файл index.js должен обрабатывать маршрут, при котором вызов POST собирается и должен послать переменную latestResults в ответ.

+0

, вы уверены, что мне нужно сначала его опубликовать? lestestResults изменяется со временем, и мне просто нужно получить к нему доступ от клиента – Johannes

+0

вы можете делать POST или GET-вызов, который зависит от вашего требования и от вас. Если ваши последние результаты зависят от клиента, отправьте обновленное значение в виде данных в вызове POST. –

0

Может быть, вы можете попробовать это:

Внутри index.js

window.myObj = (function (myObj) { 

    var latestResults = {}; 

    myObj.getLatestResults = function() { 
     return latestResults; 
    } 

    return myObj; 

}(window.myObj || {})); 
  1. Приведенный выше код использует анонимную функцию, чтобы создать замыкание, чтобы ограничить количество глобальных переменных (window.myObj является глобальная переменная).
  2. Функция получает переменную window.myObj (если она уже существует) или пустой объект (в случае, если window.myObj существует). Это делается для того, чтобы не включать файлы js в правильном порядке.
  3. Данный объект будет затем обогащен функцией getLatestResults, которая, в свою очередь, возвращает объект latestResults.

И внутри visualization.js

window.myObj = (function (myObj) { 

    myObj.visualize = function() { 
     ... 
     var data = myObj.getLatestResults()[timestamp]; 
     ... 
    } 

    return myObj; 

}(window.myObj || {})); 
  1. же процедура, как и в index.js. Закрытие принимает глобальную переменную myObj (window.myObj).
  2. window.myObj обогащен функцией визуализировать (не нужно делать этот шаг, но я предполагал, что вам нужна какая-то функция где-то, чтобы делать ваши материалы визуализации).
  3. Функция Визуализируйте тогда в состоянии ухватить latestResults через myObj.getLatesResults.
+0

Идея состоит в том, чтобы НЕ использовать вызов AJAX вообще, поскольку у вас уже есть все объекты, кэшированные в javascript. –

+0

Не могли бы вы вкратце объяснить, что там происходит? – Johannes

+0

Редактировать вопрос - добавлено краткое объяснение. –

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