2017-03-17 78 views
1

在这个应用程序,用户有一个表,他们可以输入数据。每行都有一个“编辑”按钮,当他们点击该按钮时,我想将它们带到一个名为“/ update”的新页面,在那里他们可以修改该行中的值。如何使用Node.js和Express在JavaScript中使用GET请求更改页面?

我现在拥有它,当它们单击更新按钮时,它将运行editRow函数,传递表的id和行中的数据。但是,我无法弄清楚如何让路线正常工作。

我正在使用Node.js,Express,Handlebars,但没有 jQuery。

app.js(服务器端)

app.get('/update', function(req,res){ 
    var context = {}; 
    context.tableID = req.ID; 
    context.element = req.element; 
    res.render('update', context); 
}); 

update.handlebars

<h1>test for now</h1> 

main.handlebars

<!doctype html> 
<html> 
<head> 
    <title>Workout Tracker</title> 
    <link rel="stylesheet" href="css/style.css"> 
    <script src="scripts/buttons.js" type="text/javascript"></script> 
</head> 
<body> 
    {{{body}}} 
</body> 
</html> 

buttons.js(客户端)

function editRow(tableID, element) { 

    var httpRequest; 

    httpRequest = new XMLHttpRequest(); 

    if (!httpRequest) { 
     alert('Giving up :(Cannot create an XMLHTTP instance'); 
    } 

    httpRequest.open('GET', 'http://localhost:3000/update'); 
    httpRequest.send(); 
}; 

随着上述新的配置,我现在能够达到/update代码,但render似乎并没有被发生。服务器或客户端控制台中没有错误消息。

+0

什么是您的应用程序所需的行为,什么是它的实际行为?你有任何错误输出? –

+0

目前我只是想显示“现在测试”。如果我能得到那么多,我应该没事。使用上面的当前配置,当我点击启动editRow函数的按钮时,页面不会改变。我不擅长路由,所以我确定我的buttons.js文件有很多错误。 –

回答

2

正如您的错误所述,XMLHttpRequest对象上没有get函数。我想你的意思是用req.open代替。

您可以参考本文档,这将告诉你如何使用XMLHttpRequest来使reuqests:https://developer.mozilla.org/enUS/docs/AJAX/Getting_Started#Step_3__A_Simple_Example

+0

感谢您的帮助链接!我用我学到的东西更新了我的代码,但是我仍然无法获得新的页面进行渲染。我不知道为什么。我更新了上面的代码以反映我的更改。 –