我发送了<%= searchString%>到了第一个地方的前端。 然后,我尝试在搜索页面上添加排序功能。 当使用排序功能重做搜索时,如何将searchString值发送回我的后端。
node.js段代码
router.get('/search', function(req, res){
console.log("Searching " + JSON.stringify(req.query));
var results = [];
for(var i in restaurants) {
for(var j in restaurants[i]["categories"]) {
var category = restaurants[i]["categories"][j];
if(req.query.q && req.query.q.indexOf(category) != -1) {
results.push({
name: restaurants[i]["name"],
price: restaurants[i]["priceCat"],
categories: restaurants[i]["categories"]
});
}
}
}
console.log("Search Results: " + JSON.stringify(results));
res.render('pages/search', {
pageTitle: "search",
searchString: req.query.q,
results : results
});
});

<%- contentFor('body') %>
<h1>Search Results: <small><%=searchString%></small></h1>
<% if (results.length === 0) { %>
<h4>No results found</h4>
<% } else { %>
<h2><small>Sort by:</small>
<div class="row-sm-1">
<form action="/search" method="GET">
<div class="form-group">
<a href="/search">
<button type="submit" name="price" class="btn btn-primary btn-lg">Price</button>
</a>
</div>
</form>
</div>
</h2>
<table class="table">
<tr>
<th>Name</th><th>Price</th><th>Category</th>
</tr>
<% for(var i = 0; i < results.length; i++) {%>
<tr>
<td><%= results[i].name%></td>
<td><%= results[i].price%></td>
<td>
<% for(var j = 0; j < results[i].categories.length; j++) {%>
<%= results[i].categories[j]%><% if(j != results[i].categories.length - 1) {%>,<%}%>
<%}%>
</td>
</tr>
<%}%>
<%}%>
</table>
&#13;
答案 0 :(得分:0)
您可以在jquery中使用$ .post来命中在您的情况下在node.js / express.js中定义的路由。
我认为你错过了关于建筑风格的基本思维导图。 REST架构可用于此任务。
REST解释:What exactly is RESTful programming?
这也有助于获得基本想法