我试图将输入框中的值返回到路径中的变量,将此source作为参考但是卡住了,在示例作者中搜索关键字,使用此关键字构建网址,并返回身体反应。
我的用例有点不同我需要用户在搜索框中提供一个url作为字符串,然后我会将其传递给我的请求函数以吐出响应正文
当前的app.js(服务器端)
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);
});
main.js(客户端)
$(function(){
$('#submit').on( 'click', function () {
var sSearch = $('#search').val();
var parameters = { search: sSearch };
$.get( '/searching',parameters, function(data) {
$('#results').html(data);
});
});
});
我意识到上述两个文件中的/searching
必须被替换,因为目前它正在尝试搜索'用户输入的url值作为查询字符串,所以如果我输入" https://google.com"在文本框中,应用程序尝试搜索:
http://localhost:3000/searching?search=https%3A%2F%2Fgoogle.com
相反,我需要它将此url原样传递给request
函数,以便我可以打印body response
,在这种情况下,它将是页面的源代码。但我不知道该怎么办
index.jade(模板)
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")
我应该如何设置格式以便将变量从客户端传递到服务器,然后在处理后将其发送回客户端?任何帮助表示赞赏。
答案 0 :(得分:1)
在app.js
中您正在进行异步http调用,但响应是在调用http回调之前发送的。只需移动回调中的res.send(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);
});
});
答案 1 :(得分:0)
我在您的客户端代码中看到了ajax请求,所以在您的服务器代码中,尝试回复这样的内容:
res.status(200).json(content)
在您的客户端代码中,检查内容是否存在(在$()之前的console.log(数据).html(数据)......)
PD:请求是异步的,因此您必须在请求回调中进行响应。