Javascript 将AJAX get调用中的查询参数传递给express route

Javascript 将AJAX get调用中的查询参数传递给express route,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,我现在正在为Node使用一个twitterapi包装器,并试图找出如何将查询参数从HTML表单传递到ajaxget请求,然后将该参数传递到我的Express路由,而不仅仅是让表单操作直接传递到路由 这是我的HTML代码 <form id="searchTerm"> Keyword:<input id="keyword" type="text" name="q" placeholder="Keyword"> <input type="submit"

我现在正在为Node使用一个twitterapi包装器,并试图找出如何将查询参数从HTML表单传递到ajaxget请求,然后将该参数传递到我的Express路由,而不仅仅是让表单操作直接传递到路由

这是我的HTML代码

  <form id="searchTerm">
    Keyword:<input id="keyword" type="text" name="q" placeholder="Keyword">
    <input type="submit">
  </form>
然后是我的Node.JS路线:

// Search by keywords or phrases
app.get('/search/tweets/term', function(req, res) {
  var q = req.query.q;

// Accesses the Twitter API and pulls back the respective tweets
  client.get('search/tweets', {q: q, count: 100, lang: 'en', exclude: 'retweets'}, function(error, tweets, response) {
    if(!error) {
      res.send(tweets);
    } else {
      console.log(error);
      res.status(500).send(error.stack);
    }
  });
});
然而,每当我在表单中输入一个值时,终端就会收到一条“querymissingsparameters”错误消息。不知道我做错了什么

更新

通过以下方式使其正常工作:

$(document).ready(function() {
  $('#searchTerm').on('submit', function(e) {
    e.preventDefault();
    var q = $('#keyword').val();

    $.ajax({
      type: 'GET',
      data: {q: q},
      url: '/search/tweets/term',
      success: function(data) {
        console.log(data);
      }
    })
  })
})
但是,由于我正在实现e.preventDefault(),我将丢失URL中的查询参数。既然我想让用户能够共享特定关键字的URL,那么有什么方法可以在URL中保持这些参数不变的同时仍然在客户端发送JSON?或者只需在服务器端操作JSON,并通过模板引擎呈现数据?

试试这个

$(文档).ready(函数(){
$('searchTerm')。在('submit',function()上{
$.ajax({
键入:“GET”,
数据:q,
url:“/search/tweets/term?q=”,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(错误){
console.log(错误);
}
});
});

});
data:q,
您在哪里定义了
q
?数据:“q”quots?阻止表单提交。因为如果您不知道,您的ajax正在获取结果,但网页已经导航到下一页…@marainesparnisari-即使我将:
var q=$(“#关键字”).val()
添加到ajax调用之外的范围中,我仍然会收到错误@deocwalk也尝试过,它似乎仍然会给我同样的错误。真让我抓狂你的“试试这个”有什么解释吗?例如,为什么您的代码工作,为什么操作代码不工作。他在节点参数上使用var q=req.query.q,这需要q参数来获取值。
$(document).ready(function() {
  $('#searchTerm').on('submit', function(e) {
    e.preventDefault();
    var q = $('#keyword').val();

    $.ajax({
      type: 'GET',
      data: {q: q},
      url: '/search/tweets/term',
      success: function(data) {
        console.log(data);
      }
    })
  })
})