Ajax 复杂节点url映射
我需要帮助在nodejs中的express.js框架中进行url映射Ajax 复杂节点url映射,ajax,node.js,express,Ajax,Node.js,Express,我需要帮助在nodejs中的express.js框架中进行url映射 router.get('/first/:second_param', function(res,req){ //processing second_param and rendering a template, res.render('first.html'); }); router.get('/first/:second_param/get_items', function(res,req){ //agai
router.get('/first/:second_param', function(res,req){
//processing second_param and rendering a template,
res.render('first.html');
});
router.get('/first/:second_param/get_items', function(res,req){
//again evaluating second_param and and responding accordingly
res.send(jsonData);
});
在Express 4.0中,这种路由是否可行
first.html在url。/get_items'上发出ajax请求。是的,可以使用Express 4.0执行此操作 以下是一个例子: 您需要安装ejs和express:
npm安装ejs express
app.js
文件:
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
res.redirect('/home/2');
});
app.get('/home/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log(itemId);
res.render('index');
});
app.get('/api/items/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log('item id: %s', itemId);
res.json([{name: 'item1'}]);
});
app.listen(8080, function() {
console.log('server up and running at 8080');
});
<!doctype html>
<html>
<head>
</head>
<body>
<h1>Hello World!</h1>
<script>
function responseGET() {
if(this.readyState !== 4 || this.status !== 200) return;
alert(this.responseText);
}
function getItems(URL) {
var request = new XMLHttpRequest();
request.open('GET', URL, true);
request.onreadystatechange = responseGET.bind(request);
request.send(null);
}
function domReady() {
getItems('http://localhost:8080/api/items/1');
}
document.addEventListener('DOMContentLoaded', domReady);
</script>
</body>
</html>
视图/index.ejs
文件:
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
res.redirect('/home/2');
});
app.get('/home/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log(itemId);
res.render('index');
});
app.get('/api/items/:itemId', function(req, res) {
var itemId = req.params.itemId;
console.log('item id: %s', itemId);
res.json([{name: 'item1'}]);
});
app.listen(8080, function() {
console.log('server up and running at 8080');
});
<!doctype html>
<html>
<head>
</head>
<body>
<h1>Hello World!</h1>
<script>
function responseGET() {
if(this.readyState !== 4 || this.status !== 200) return;
alert(this.responseText);
}
function getItems(URL) {
var request = new XMLHttpRequest();
request.open('GET', URL, true);
request.onreadystatechange = responseGET.bind(request);
request.send(null);
}
function domReady() {
getItems('http://localhost:8080/api/items/1');
}
document.addEventListener('DOMContentLoaded', domReady);
</script>
</body>
</html>
你好,世界!
函数responseGET(){
如果(this.readyState!==4 | | this.status!==200)返回;
警报(this.responseText);
}
函数getItems(URL){
var request=new XMLHttpRequest();
打开('GET',URL,true);
request.onreadystatechange=responseGET.bind(请求);
请求发送(空);
}
函数domrready(){
getItems('http://localhost:8080/api/items/1');
}
document.addEventListener('DOMContentLoaded',domReady);
基本上,我有一个服务器,当有人在/home/:itemId
请求时,该服务器提供index.html,并且我还公开了另一个用于提供项目的路由/api/items/:itemId
DOM就绪后,我将从客户端请求/api/items/:itemId
一些项目,然后这些项目将显示在索引html中