使用json发送一个html文件并让浏览器重新加载该json而不重新加载页面

时间:2016-12-23 10:14:00

标签: javascript jquery json node.js express

我正在尝试编写一个浏览器服务器程序,浏览器会将http发送到' http://localhpost:3000/param=something'。服务器应该返回一个html页面和一个json。我尝试使用res.render(),其中我传递json作为参数(它是一个数组),但渲染不起作用。这是我在app.js中的代码:

app.use(express.static(path.join(__dirname, 'public')));
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');

并且这里是回答http请求的index.js:

router.get('/:screen', function(req, res, next) {
var arr = Array();
res.render('main.html', { playlist : arr });
});

我得到的错误是: 错误:无法找到模块' html'

现在,即使可行,我仍然必须以某种方式从服务器每分钟获取更新的json(数组),而不重新加载页面。我成功地在那里访问存储在共享库中的主json(数组)并使用ajax加载它。这是有效的,但该程序需要得到一个与该屏幕相关的子json'在原始http get中发送的参数。 为了做到这一点,我需要一种方法让服务器重新计算原始的子json并重新发送给我,而无需重新加载页面。

关于研究和我尝试过的事情: 问题1 :我通过这个网站搜索了很多,发现了一些对我没用的解决方案。这可能是一个版本问题或其他任何我不注意的事情,但我做了所有我应该做的改变,以便做出渲染()&#39 ;在HTML上工作。我只是不断收到这个错误。 问题2 :正如我已经解释的那样,我找到了获得原始json的方法,但无法弄清楚如何获得sub-json。这是main.html中的代码(无论参数'屏幕'作为原始获取请求的一部分,都会被发回):

$.get("http://localhost:3000/ads.js", function(data, status){
    playlist = JSON.parse(data);
});

我非常感谢任何有关这些问题的帮助。

注意:我在同一个问题中包含了这两个问题,因为它们相互连接。这两个请求都应该使服务器计算一个子json并发送它。一个请求将作为html文件的一部分发回,另一个请求将加载到该页面而不重新加载整个页面。解决其中一个问题直接影响到另一个,所以我选择将它们包括在这里。

1 个答案:

答案 0 :(得分:1)

好的,所以我在这里解决了所有这些问题:

  • 至于render()函数,我了解到你需要以某种方式更改视图引擎,所以我没有使用它。
  • 相反,我使用' sendFile()'将主html文件发送到所有电台。在那个html文件中,我包含了ajax请求(这使得网站无法重新加载)。我设置了' url' to' window.location.href'其中包括所需的参数。
  • 在服务器端,我使用单独的函数来处理请求。一个发回主html文件,另一个使用url中的参数计算sub-json并将其发送回用户。