2014-07-06 4 views
3

comment puis-je encoder le mot-clé qui est envoyé au serveur, puis le décoder?angulaire encode url recherche chaîne

Je ne peux pas rechercher des mots-clés contenant des caractères tels que. ou/pour le moment.

L'affichage du code est incorrect car le point de terminaison renvoie un objet.

self.search = function (keyword) { 
      var endpoint = $location.path(baseEndpoint + "search/").search(keyword), 
       deferred = $q.defer(); 

      $http.get(HttpRequestUrlHelper.ensureUniqueRequestUrl(endpoint), { 
      }).success(function (response) { 
       deferred.resolve(response); 
      }).error(function (error) { 
       deferred.reject(error); 
      }); 

      return deferred.promise; 
     } 

Si j'utilise encodeURIComponent() mon URL est codé, mais mon contrôleur n'est pas touché:

request url => /todo/search/Leka%20med%20barnen.?UniqueKey=1404655031784 angular.js:9159 
GET http://localhost:49195/todo/search/Leka%20med%20barnen.?UniqueKey=1404655031784 404 (Not Found) 

Répondre

0

a fini par faire une requête chaîne à la place:

var endpoint = baseEndpoint + "search?keyword=" + keyword, 
+0

Je pense que c'est plus approprié quand même. Il est plus RESTFUL d'utiliser des variables de chemin uniquement lorsqu'elles servent de coordonnées pour les ressources demandées. –

1

Vous pouvez utiliser la fonction d'échappement: http://www.w3schools.com/jsref/jsref_escape.asp

+5

La fonction escape() a été dépréciée dans JavaScript versio n 1.5. Utilisez encodeURI() ou encodeURIComponent() à la place. Mais ce n'est pas angulaire pour quelque chose? –

+0

Quand j'utilise encodeURIComponent(), il encode la chaîne mais la console sort un 404. Le point d'arrêt de mon contrôleur isent hit. Met à jour ma question –

+0

Pourquoi aurait-il besoin d'un si ces méthodes font le travail? –