从javascript更新node.js驱动的内容

从javascript更新node.js驱动的内容,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我试图通过从下拉列表中选择来实现ul的动态更新。另外,我对node.js完全陌生 在node.js中: app.get('/', function (req, res) { res.json(searchYT(res.valDDl)); }); var searchTerm="Astrix"; function searchYT(term) { search(term, opts, function(err, results) { if(err) return console

我试图通过从下拉列表中选择来实现ul的动态更新。另外,我对node.js完全陌生

在node.js中:

app.get('/', function (req, res) {
  res.json(searchYT(res.valDDl));
});

var searchTerm="Astrix";

function searchYT(term)
{
  search(term, opts, function(err, results) {
    if(err) return console.log(err);

    var str = JSON.stringify(results,null,4);

    fs.writeFile("./results.json", str, function(err) {
      if(err) {
        return console.log(err);
      }
    });
  });
}

searchYT(searchTerm);

app.locals.resultsData = require('./results.json');

module.exports = app;
在index.ejs中

  <select id="playDDL" name="playDDL" onchange="reportDDL(this.value)">
    <option value="Astrix">Astrix</option>
    <option value="Deadmau5">Deadmau5</option>
    <option value="Tiesto">Tiesto</option>
    <option value="Avicii">Avicii</option>
    <option value="Markus Schulz">Markus Schulz</option>
    <option value="Armin Van Buuren">Armin Van Buuren</option>
  </select>
  <ul id="playUL">
    <% resultsData.forEach(function(item){ %>
      <li><a href="<%= item.link %>" target="_blank"><img src="<%= item.thumbnails.default.url %>"/></a></li>
    <% }); %>
  </ul>
    <script type="text/javascript">
      function reportDDL(val) {
        $.ajax({
          url: '/',
          type: 'GET',
          data: {valDDL: val}
        });

        $.getJSON("/", function( data ) {
          window.alert("test");
        }
          var items = [];
          $.each( data, function( key, val ) {
            //
          });
      }
    </script>

阿斯特里克斯
死神5
铁斯托
神曲
马库斯舒尔茨
阿曼凡布伦
函数报告DDL(val){ $.ajax({ url:“/”, 键入:“GET”, 数据:{valDDL:val} }); $.getJSON(“/”,函数(数据){ 窗口警报(“测试”); } var项目=[]; $。每个(数据、函数(键、值){ // }); }
正如您所注意到的,我试图使用javascript识别下拉菜单选择中的更改,并以某种方式更改节点中的搜索词,调用searchYT()函数,然后使用新的下拉列表选择再次呈现ul。
我缺少什么?

您需要客户端的ajax调用来调用node.js服务器中的路由,在那里您可以返回结果。然后,调用代码获取结果并将其插入页面。浏览器中的Javascript仅在浏览器中运行,不能直接调用服务器中的函数。您必须使用网络调用(Ajax调用)与服务器通信。这不是“$.Ajax({type:”POST“尝试完成?我不确定如何继续..这是一个正确的想法,但您需要将URL传递给ajax调用,并且需要转到node.js服务器中的特定路由,该路由需要返回正确的结果和
reportDDL()
函数需要处理结果并修改当前页面。您当前的ajax调用不起任何作用。它不针对特定的URL,也不处理任何结果。我已更新了我的原始代码/帖子以反映最新的更改。我对node.js的post/GET处理不太熟悉,正如您所看到的,我正在尝试不这样做如果收到响应而未收到,请使用有效代码进行est。如果可以的话,请使用有效代码进行帮助。您现在所拥有的还远远不够。如果您有jQuery,请务必将它用于ajax调用,因为它大大简化了事情。在客户端,您只是缺少URL和响应处理程序(服务器端缺少其他内容)。只需遵循jQuery文档中的一些示例。也许您应该找到并遵循一个简单的教程,从jQuery到express进行ajax调用。我相信网络上有很多。您需要客户端的ajax调用来调用node.js服务器中的路由,在那里您可以返回结果。然后,调用代码获取结果并输入将其插入页面。浏览器中的Javascript仅在浏览器中运行,不能直接调用服务器中的函数。您必须使用浏览器中的网络调用(Ajax调用)与服务器通信。这不是“$.Ajax({type:”POST”的功能吗“尝试完成?我不确定如何继续..这是一个正确的想法,但您需要将URL传递给ajax调用,并且需要转到node.js服务器中的特定路由,该路由需要返回正确的结果和
reportDDL()
函数需要处理结果并修改当前页面。您当前的ajax调用不起任何作用。它不针对特定的URL,也不处理任何结果。我已更新了我的原始代码/帖子以反映最新的更改。我对node.js的post/GET处理不太熟悉,正如您所看到的,我正在尝试不这样做如果收到响应而未收到,请使用有效代码进行est。如果可以的话,请使用有效代码进行帮助。您现在所拥有的还远远不够。如果您有jQuery,请务必将它用于ajax调用,因为它大大简化了事情。在客户端,您只是缺少URL和响应处理程序(服务器端缺少其他内容)。只需遵循jQuery文档中的一些示例。也许您应该找到并遵循一个关于从jQuery到express进行ajax调用的简单教程。我相信网上有很多。