具有anglular ui的自定义可共享和可收藏的URL - 路由器请求参数

时间:2016-07-19 17:56:06

标签: angularjs node.js mongodb express angular-ui-router

目前,我将数据存储在cookie中,并通过ajax调用将其传递给服务器获取数据。

所以,目前我的webapp特定于单个客户端机器,而且url不可共享。所以我想传递请求参数来动态生成url以从我的节点服务器获取和更新数据。

如何生成类似下面的链接,并将其作为$ http服务的一部分传递给angular来从node express获取数据。

https://www.opendoor.com/homes/phoenix?min_bedrooms=2&min_price=25000000&max_price=40000000&pool=Any&active=1

当前代码:

AngularJS     $ http.post('/ getPropertyData',data).success(function(data,status){         $ scope.parseData(数据);     });     .state('listProperties',{                 网址: '/ listProperties',                 templateUrl:'list.html',                 controller:'listControl'             })

节点后端:

router.post('/',function(req,res) {
  var finalResp = [];
  var asyncIterator = 0;
  MongoClient.connect(url, function(err, db) {
  ...........
  function sendResponse(asyncIterator,length,finalResp,db) {
    if(asyncIterator==length) {
      res.send(finalResp);
      db.close();
    }
  }
}

1 个答案:

答案 0 :(得分:0)

当您将数据作为第二个参数传递给$http.post angular时,会将该JS数据放入请求的有效负载/正文中,而不是在URL中对其进行编码。因此,您可以选择从节点端的正文中读取参数,或者更改$ http post请求以使用URL查询参数,而不是数据请求的正文/有效负载。

AngularJS - Any way for $http.post to send request parameters instead of JSON?

这样的事情应该有效: $http.post('/getPropertyData',$httpParamSerializer(data))



angular.module('myApp', []).run(function($http, $httpParamSerializer){
  var data = {some:'stuff', in:'here'}
  console.log($httpParamSerializer(data))
  //$http.post('/getPropertyData',$httpParamSerializer(data)) actually use this line
})

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<div ng-app="myApp">
</div>
&#13;
&#13;
&#13;