31

What's the best way to parse a query string in Angular without using html5mode? (Not using html5mode because we need to support older browsers)

I get the same undefined results whether or not I use a hash:

http://localhost/test?param1=abc&param2=def
http://localhost/test#/param1=abc&param2=def

$routeParams and $location.search() both return undefined:

var app = angular.module('plunker', ["ngRoute"]);

app.controller('MainCtrl', ["$scope", "$routeParams", "$location",
  function($scope, $routeParams, $location) {

  console.log($routeParams, $routeParams.abc); //undefined, undefined
  console.log($location.search(), $location.search().abc); //undefined, undefined

}]);

I can parse the window.location.search myself, but I'm hoping there is a better way to do it in Angular.

Plnkr: http://plnkr.co/edit/alBGFAkfqncVyK7iv8Ia?p=preview

I've read this post and haven't found a solution. I must be missing something. Thanks for the help.

2
  • So the problem with your plunker will probably be because of it being inside of an iframe. Is the same issue happening locally? Commented Dec 19, 2013 at 22:08
  • Yes, same results locally. Thanks for the help. Commented Dec 19, 2013 at 22:17

1 Answer 1

32

the query params should go after the hash:

http://localhost/test#/?param1=abc&param2=def

this should allow $location.search() to return an object like:

{
  param1: 'abc',
  param2: 'def'
}
Sign up to request clarification or add additional context in comments.

2 Comments

Agh - I didn't realize you needed both the # and the ?. That makes total sense - thank you!
Or simply you can use $routeParams.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.