2016-09-27 19 views
0

我正在使用nodejs和angularjs。req.param在服務器端給出未定義:nodejs

  1. 我發送請求到nodejs服務器,在我的客戶端js中有參數中的所需數據。

    itinerary.js

    $http({ 
        method : "GET", 
        url : '/createItinerary', 
        data : { 
         "source" : $scope.sourceDestination.source, 
         "destination" : $scope.sourceDestination.destination 
        } 
    }) 
    
  2. 我節點js文件,當我使用req.params( 「源」)或req.params( 「目標」),我在他們越來越不確定。

    createIitinerary.js

    exports.check = function(req,res){ 
    // These two variables come from the form on 
    var source = req.param("source"); 
    var dest = req.param("destination"); 
    
    console.log("source:"+source); 
    console.log("dest:"+dest); 
    
    var json_responses; 
    
    if(source == dest){ 
        json_responses = {"statusCode" : 401}; 
        res.send(json_responses) 
    } 
    else{ 
        json_responses = {"statusCode" : 200}; 
        res.send(json_responses); 
    }}; 
    

問:當我使用後,該數據被正確接收的NodeJS,但與得到的。爲什麼是這樣?如何使用Get請求將數據發送到nodejs。

回答

1

對於$http.get()設置paramsdata

嘗試:

$http({ 
     method : "GET", 
     url : '/createItinerary', 
     params: { 
      "source" : $scope.sourceDestination.source, 
      "destination" : $scope.sourceDestination.destination 
     } 
    }) 

它應該很容易檢查瀏覽器開發工具網絡所使用的網址,並確保它看起來正確

0

如果您閱讀有關http動詞,然後你會知道,如果方法是GET,那麼我們不能發送正文中的數據。

我們可以把數據作爲查詢參數如果請求的類型爲GET 所以你的要求將成爲

而且可以作爲

req.query.source 
req.query.destination 

可以讀取服務器端數據如果方法類型爲PUTPOSTDELETEUPDATE

結論

從來不把身體在用GET請求

+0

您需要將這些變量連接成URL字符串......不能僅僅把它們作爲字符串的一部分。更容易和更少的錯誤容易讓角度解析'params'對象 – charlietfl