Javascript Node Express将变量从客户端传递到服务器

Javascript Node Express将变量从客户端传递到服务器,javascript,node.js,express,Javascript,Node.js,Express,我试图将输入框中的值返回给route中的变量,方法是将其作为引用,但我被卡住了,在示例中,作者正在搜索关键字,使用该关键字构建url,并返回正文响应 我的用例有点不同,我需要用户在搜索框中提供一个url作为字符串,然后将其传递给我的请求函数,以吐出响应体 当前app.js(服务器端) main.js(客户端) 我意识到必须替换上述两个文件中的/search,因为当前它正在尝试“搜索”用户输入的url值作为查询字符串,因此如果我在文本框中输入“”,应用程序将尝试搜索: 相反,我需要它按原样将此u

我试图将输入框中的值返回给route中的变量,方法是将其作为引用,但我被卡住了,在示例中,作者正在搜索关键字,使用该关键字构建url,并返回正文响应

我的用例有点不同,我需要用户在搜索框中提供一个url作为字符串,然后将其传递给我的请求函数,以吐出响应体

当前app.js(服务器端)

main.js(客户端)

我意识到必须替换上述两个文件中的
/search
,因为当前它正在尝试“搜索”用户输入的url值作为查询字符串,因此如果我在文本框中输入“”,应用程序将尝试搜索:

相反,我需要它按原样将此url传递给
请求
函数,以便我可以打印
正文响应
,在这种情况下,这将是页面的源代码。但我不知道我该怎么做

index.jade(模板)


我应该如何格式化,以便将变量从客户端传递到服务器,然后在处理后将其发送回客户端?非常感谢您的帮助。

我在您的客户机代码中看到ajax请求,因此在您的服务器代码中,尝试响应如下内容:

  res.status(200).json(content)
在客户端代码中,检查内容是否存在(console.log(数据)在$().html(数据)之前)


PD:请求是异步的,因此您必须在请求回调中进行响应。

app.js
中,您正在进行异步http调用,但响应是在调用http回调之前发送的。只需移动
res.send(内容)在回拨中

app.get('/searching', function(req, res){

   // input value from search
  var url = req.query.search;
  console.log(url); // prints value

  request({ uri: url}, function (error, response, body) {
    if (!error) {
      content = body;
      console.log(content);
    } else {
      console.log('Oops! Error when contacting slack.com');
    }
    res.send(content);
  });
});

顺便说一句,您没有使用
var
关键字就将
content
泄漏到了全局名称空间。谢谢您指出了这一点。尽管问题依然存在,
请求模块仍在尝试搜索
http://localhost:3000/searching?search=https\\google.com
虽然我只希望
请求模块
处理用户输入的
url
,而不是将其作为查询字符串追加。请检查发送到请求模块的
uri
的值。您的代码中有一个输入错误,我将其从
uri
更改为
url
。这不是输入错误,
url
是我传递的变量,它保存用户输入值<代码>变量url=req.query.search看起来问题现在已被编辑并修复。无论如何,我能够使用上述代码并提供
req.query.search
extends layout

block content
    input#search(type="search", placeholder="Enter Keyword")
    button#submit(type='submit',class='btn btn-success') Search
    h2#results

    script(src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js")
    script(src="/javascripts/main.js")
  res.status(200).json(content)
app.get('/searching', function(req, res){

   // input value from search
  var url = req.query.search;
  console.log(url); // prints value

  request({ uri: url}, function (error, response, body) {
    if (!error) {
      content = body;
      console.log(content);
    } else {
      console.log('Oops! Error when contacting slack.com');
    }
    res.send(content);
  });
});