我正在尝试编写浏览器服务器程序,浏览器发送http获取到'http://localhpost:3000/param=something'。服务器应该返回一个html页面和一个json。我尝试使用res.render()作为参数传递json(它是一个数组),但渲染不起作用。这里是我的代码在app.js:使用json发送html文件并让浏览器重新加载该json而不重新加载页面
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加载它时。这很有效,但程序需要获取与原始http get中发送的“screen”参数相关的子json。 为了做到这一点,我需要一种方法来让服务器重新计算原始子JSON并重新发送给我,而无需重新加载页面。
至于研究和我尝试过的东西: 问题1:我通过这个网站搜索了很多,发现了几个解决方案,都没有为我工作。它可能是一个版本问题或其他任何我没有注意到的,但我已经做了所有的改变,我应该为了使'render()'在html上工作。我只是不断收到这个错误。 问题2:正如我已经解释过的,我找到了一种获取原始json的方法,但无法弄清楚如何获取子json。这里是在main.html中的代码(发送回不管参数“屏幕”作为原GET请求的一部分):
$.get("http://localhost:3000/ads.js", function(data, status){
playlist = JSON.parse(data);
});
我将非常感谢任何有关这些问题的任何帮助。
注:我在同一个问题中包含了这两个问题,因为它们是相互连接的。这两个请求应该使服务器计算一个子JSON并发送它。一个请求会将其作为html文件的一部分发回,另一个请求会在不重新加载整个页面的情况下加载到该页面中。解决这些问题中的一个直接影响另一个,所以我选择在这里包括它们。
+0
在一个请求中,来自服务器的响应可以是HTML **或** JSON--在一个响应中你不能同时做两个 - 嗯,你可以,但它不是真的html或json,它是只是**数据**必须在客户端处理 –
+0
json不必单独发送。我试图使用'render()'将它与html页面一起发送,以便它可以作为变量添加到页面中。只要它可以通过浏览器的html页面访问,所有的方法都是有效的。 –