2015-07-12 165 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

相關問題