2016-08-14 144 views
0

我有一个使用node.js express框架的程序。 在那里我有一个名为index.js的文件,它处理事物的服务器端。 它有一个对象(latestResults = {}),它存储分配给时间戳的json对象(latestResults [timestamp] = jsonObj)。使用AJAX GET请求获取对象

在一个名为visualization.js(client)的文件中,我想访问该对象。 我想使用AJAX GET请求,但坦率地说,我不知道这是怎么回事,我在网上找不到任何东西。 网址如何显示?

+0

你可以在你的'index.js'文件中显示一些代码。 latestResults如何存储? –

+0

var latestResults = {} 它充满了分配给时间戳的json对象 – Johannes

回答

0

已经改进我的OG什么OP是问知识我会尽量回答是这样的:

用于安装其他端点服务与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

我假设latestResults作为全局变量存储在服务器端。 –

+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调用,这取决于你的需求和你。如果您的latestResults取决于客户端,请在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. 功能形象化然后能够通过myObj.getLatesResults得到的latestResults保持。
+0

这个想法是根本不使用AJAX调用,因为您已经将所有对象都缓存在javascript中。 –

+0

你能简单解释一下发生了什么吗? – Johannes

+0

编辑问题 - 添加简要说明。 –