2015-07-12 164 views
0

我试图从一个输入框的路线返回值的变量,通过采取这种source作为参考,但我坚持,在本例中笔者搜索的关键词,构建网址使用这个关键字,并返回一个主体响应。节点快速传递变量从客户端到服务器

我的使用情况有点不同,我需要的用户提供一个网址,如搜索框,一个字符串,然后,我会传给我的请求功能吐响应主体

当前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

,而不是我需要通过这个网址为的就是能在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

您是通过声明它没有通过的方式使用'var'关键字泄漏'content'到全局命名空间。 – m90

回答

0

我看到你的客户端代码Ajax请求,所以在你的服务器代码,试图回应是这样的:

res.status(200).json(content) 
在客户端代码

,检查的内容有(的console.log(数据。)之前$()HTML(数据)...)

PD:请求是异步,所以你必须请求回调内响应。

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); 
    }); 
}); 
+0

啊感谢指出,我出去。虽然问题仍然存在,'请求module'仍试图在'HTTP搜索://本地主机:3000 /搜索搜索= HTTPS \\ google.com'虽然我只希望'请求module'处理'网址是什么? '用户已经输入并且不会将其追加为查询字符串。 – user988544

+0

检查发送到请求模块的'uri'的值。在你的代码中有一个错字,我把它从'uri'改成'url'。 – kiran

+0

这不是一个错字,'url'is即想过去保持的用户输入值的变量。 'VAR URL = req.query.search;' – user988544

相关问题