2017-04-23 11 views
0

最初にフロントエンドに<%= searchString%>を送った。 次に、検索ページにソート機能を追加しようとしています。 ソート機能を使って検索をやり直すときに、どのようにしてsearchString値をバックエンドに送り返すことができますか?フロントエンドjQueryからバックエンドnode.jsにデータを渡す方法

Node.jsのセグメントコード

router.get('/search', function(req, res){ 
 
\t 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)); 
 
\t 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>

+1

と同じ方法あなたが任意のバックエンドと同じように基本的なアイデアを得るために役立つだろう。 NodeJSとは何の関係もありません。 jQueryで$ .getまたは$ .postを使用できます。 –

答えて

0

あなたはあなたのケースでのNode.js/express.jsで定義されたルートを打つためにjqueryので$ .postを使用することができます。

私はあなたが建築様式についての基本的なマインドマッピングを見逃していると思います。このタスクにはRESTアーキテクチャーを使用できます。 RESTの

説明:What exactly is RESTful programming?

これは、同様に

enter image description here