req.param在服务器端给出undefined:nodejs

时间:2016-09-27 21:24:09

标签: javascript angularjs node.js express

我正在使用nodejs和angularjs。

  1. 我将get请求发送到nodejs服务器,并在客户端js的参数中包含所需的数据。

    itinerary.js

    $http({
        method : "GET",
        url : '/createItinerary',
        data : {
            "source" : $scope.sourceDestination.source,
            "destination" : $scope.sourceDestination.destination
        }
    })
    
  2. 我是节点js文件,当我使用req.params(“source”)或req.params(“destination”)时,我的内容未定义。

    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);
    }};
    
  3. 问题:当我使用Post时,数据在nodejs中正确接收,但不在Get中。为什么是这样?如何使用Get request将数据发送到nodejs。

2 个答案:

答案 0 :(得分:1)

对于$http.get(),您设置params而不是data

尝试:

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

应该很容易检查浏览器开发工具网络中使用的URL并确保它看起来正确

答案 1 :(得分:0)

如果您阅读了关于http动词的内容,那么您将会知道如果该方法的类型为 GET ,那么我们就无法在正文中发送数据。

如果请求的类型为GET,我们可以将数据作为查询参数发送 所以你的请求将成为

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

您可以在服务器端读取数据

req.query.source
req.query.destination

如果方法类型为 PUT POST DELETE 更新,您可以在正文中发送数据等

结论

永远不会让身体获得要求