2016-07-19 14 views
0

Momentan, speichern meine Daten in Cookies und übergeben sie über Ajax Anruf, um Daten vom Server zu holen.Benutzerdefinierbare sharable und bookmarkbare URL mit anglular ui - Router Anfrage params

Also, derzeit meine Webapp ist spezifisch für einzelne Client-Maschine und URL ist nicht gemeinsam nutzbar. Also möchte ich Anfrageparameter übergeben, um URL dynamisch zu generieren, um die Daten von meinem Knotenserver abzurufen und zu aktualisieren.

Wie kann ich Links wie die unten erstellen und als Teil von $ http-Service in Angular übergeben, um Daten von Node Express zu holen.

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

Aktueller Code:

AngularJS $ http.post ('/ getPropertyData', Daten) .success (function (Daten, Status) { $ scope.parseData (Daten) ; }); .state ('listProperties', { url: '/ listProperties', templateUrl: 'list.html', Controller: 'List' })

Node Backend:

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(); 
    } 
    } 
} 

Antwort

0

Wenn Sie die Daten als zweites Argument an $http.post übergeben, wird angular diese JS-Daten in die Nutzlast/den Text für die Anforderung einfügen, anstatt sie in der URL zu codieren. Ihre Optionen sind also entweder das Lesen der Parameter aus dem Rumpf auf der Knotenseite oder das Ändern der $ http-Post-Anforderung, um URL-Abfrageparameter anstelle des Body/Payload der Anforderung für die Daten zu verwenden.

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

So etwas sollte funktionieren: $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>

+0

so wie kann ich die Daten aus dem params in der URL erhalte Daten an den Server zu schreiben? Ich brauche auch die gemeinsame URL. Danke im Voraus. –

+0

Gewöhnlich die Art, wie ich damit umgehe, ist ich Setup einen Zustand in eckigen (in der Regel mit ui-Router nicht ngRoute, aber entweder funktioniert), die die Parameter akzeptieren, die es benötigt, um den Zustand der Seite wiederherzustellen und das würde alle Daten, die es letztlich um einen Aufruf an das Backend zu tätigen. Der Link in der Antwort zum Umwandeln der Daten in Abfrageparameter kann bei Bedarf angezeigt werden. – shaunhusain

+0

Danke für die Hilfe bro, wenn Sie nichts dagegen haben können Sie mir ein kleines Code-Snippet bro teilen, die die URL ändern sowie senden $ http Anfrage an den Server –