javascript - 发送带有 json 的 html 文件并让浏览器重新加载该 json 而无需重新加载页面

标签 javascript jquery json node.js express

我正在尝试编写一个浏览器服务器程序,其中浏览器将 http get 发送到“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 加载它的地方成功地完成了部分操作。这行得通,但程序需要获取与原始 http get 中发送的“屏幕”参数相关的子 json。 为了做到这一点,我需要一种方法让服务器重新计算原始 sub-json 并在不重新加载页面的情况下重新发送给我。

关于研究和我尝试过的事情: 问题 1:我在这个网站上搜索了很多,发现了几个解决方案,但都不适合我。这可能是版本问题或其他任何我没有注意的问题,但我已经进行了所有我应该做的更改以使“render()”在 html 上工作。我一直收到这个错误。 问题 2:正如我已经解释过的,我找到了一种获取原始 json 的方法,但无法弄清楚如何获取子 json。这是 main.html 中的代码(作为原始 get 请求的一部分,无论参数“screen”如何,它都会被发回):

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

对于这些问题中的任何一个,我将不胜感激。

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

最佳答案

好吧,这就是我解决所有这些问题的方法:

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

关于javascript - 发送带有 json 的 html 文件并让浏览器重新加载该 json 而无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299410/

相关文章:

javascript - 我如何获得网站中最顶部定位图像的链接?

javascript - 如何在 Phaser 游戏中旋转 'player'?

javascript - 只允许 <body> 标签中的几个标签进行复制粘贴

jquery - HTML5 Canvas,为每个矩形注册点击事件

php - mysql:从两个表中获取数据取决于第一个表的id和json中的结果

android - 在django中解析json数组

java - 使用 XStream 和 JsonHierarchicalStreamDriver 输出值,如何舍入 double ?

javascript - HTTP Promise - 处理错误

javascript - 删除多个字段和标签

jquery - 如何在只读字段上启用 jquery 验证?