【问题标题】:Connecting to Node/Express Routing with Javascript使用 Javascript 连接到节点/快速路由
【发布时间】:2017-12-11 02:02:35
【问题描述】:

在使用 HTML、Javascript 和使用 Express 的 Node 创建 web 应用程序时,我经常想根据操作更改页面。

在 HTML 中,我可以添加一个 href 链接,然后适当地让我的 app.js 节点文件路由。

例如:

在节点中:

app.get('/test', function(req,res){
    res.render('public/webpage.html', {name: 'MyName'});
});

在 HTML 中:

<a href="test">Bar</a>

但是,我正在努力通过 Javascript 而不是 HTML 来做到这一点。在这种情况下,我经常想通过 Javascript 将表单数据发送到我的 Node 服务器,然后让 Node 服务器使用该信息来呈现一个新页面。

例如:

$.ajax({
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json',
    url: 'http://localhost:8888/route',
    followAllRedirects: true,
     'success': function(res){
        #Ideally, the webpage would be changed by the node route, 
     }                      
});

在节点中:

app.post('/route', function(req,res){
    res.render('public/webpage.html', {name: 'John'});
});

目前,我的 HTTP 请求不会导致呈现新页面,而是会返回一个字符串,该字符串是我想要呈现的整个 html 页面。为了轻松解决问题,我只是这样做:

'success': function(res){
    document.location.href = '/newpage.html';
    $('body').replaceWith(res); 
 }

有没有办法让 javascript 方法调用 POST 请求到 Node 服务器(或可以发送数据的任何类型的请求),然后让 Node 使用动态变量呈现不同的 html 页面?我不能只做 window.href.location 因为这不会呈现静态页面的变量输入(这些必须在服务器端计算)。此外,虽然我确信有一种方法可以在 JS 中呈现页面并且希望获得相关信息,但我对如何在服务器上执行此操作更感兴趣,因为我认为处理所有重定向会更干净。

谢谢!

【问题讨论】:

    标签: javascript jquery html node.js express


    【解决方案1】:

    您混淆了在网站上提交页面的两种方法,

     res.render('public/webpage.html', {name: 'John'});
    

    用于常规方法,用户转到您网站上的新地址,服务器为他呈现完整的网页。

    在这种方法中,服务器负责页面渲染。

    另一方面,

     res.json({name: 'John'});
    

    用于SPA方式,网站实际加载一次,每次使用AJAX请求访问服务器时,通常会收到JSON返回,并使用此JSON更新相关部分页面。

    在此方法中,客户端负责页面渲染。

    您尝试在服务器中呈现页面,但使用客户端方法。

    【讨论】:

      猜你喜欢
      • 2014-11-19
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多