매개 변수 개체에서 쿼리 문자열 작성
Angularjs에서 쿼리 매개 변수로 URL을 작성하는 방법.
API $ location.search ()가 보입니다.
문제는 $ location (url)이 URL로 리디렉션된다는 것입니다. 제 경우에는 쿼리 매개 변수에 대한 URL 및 키 : 값 쌍을 전달하고 URL을 작성하고 싶습니다. 뭔가
URL : /a/b/c
매개 변수 :{field1: value1, field2: value2}
결과: /a/b/c?field1=value1&field2=value2
이 URL을 링크에 사용하고 싶습니다. 나는 또한 각도 인코딩 ?
, &
문자를 보았습니다 . 이것을 피할 수 있습니까?
편집하다:
내 의도는 앵커 요소의 href로 URL을 사용하는 것이 었습니다. 요청을 보내기 위해 $ http를 사용하지만 때로는 쿼리 매개 변수 (현재 개체를 기반으로 함)와 함께 링크를 제공해야합니다.
감사
1.4+부터 좋은 솔루션이 있습니다. 다음을 사용하여 매개 변수 개체에서 쿼리 문자열을 작성할 수 있습니다 $httpParamSerializer
.
var qs = $httpParamSerializer(params);
다음 규칙에 따라 개체를 문자열로 변환하는 기본 $ http params serializer :
{'foo': 'bar'} results in foo=bar
{'foo': Date.now()} results in foo=2015-04-01T09%3A50%3A49.262Z (toISOString() and encoded representation of a Date object)
{'foo': ['bar', 'baz']} results in foo=bar&foo=baz (repeated key for each array element)
{'foo': {'bar':'baz'}} results in foo=%7B%22bar%22%3A%22baz%22%7D" (stringified and encoded representation of an object)
Note that serializer will sort the request parameters alphabetically.
Angular는 buildUrl()
내부적으로 함수를 사용하여 매개 변수 개체에서 쿼리 문자열을 만듭니다. 지금 $HttpProvider
은 eval()
마술 을하고 싶지 않으면 비공개이기 때문에 코드에서 사용하는 것은 불가능합니다 .
github 관련 문제 :
당신이 정말로 잘못된 나무를 짖는 것 같다고 믿으십시오 ... $ http.get (url, config) 또는 $ http.post (url, data, config)를 제공하는 $ http 서비스를 살펴 봐야합니다. 매개 변수가있는 GET 요청은 다음 SO를 참조하십시오.
$ http 및 작동 방식에 대한 정보는 Angular 문서를 참조하십시오.
http://docs.angularjs.org/api/ng.$http
아마도 내가 목표를 오해하고 있으며 실제로 다른 장소로 이동하고 싶을 수도 있습니다. 여기서 제가 제안하는 것은 백그라운드 (AJAX 스타일)에서 요청하는 것입니다.
JS
angular.module("myApp", []).controller("MyCtrl", ["$scope", "$window", function($scope, $window) {
$scope.goPlaces = function(url, parameter) {
$window.open("http://www."+url+"?q="+parameter);
//$window.open("http://www."+url+"?q="+parameter, "_self");
//$window.open("http://www."+url+"?q="+parameter, "_top");
};
}])
HTML
<div ng-app="myApp" ng-controller="MyCtrl">
<a href="#" ng-click="goPlaces('google.com','Shaun Husain')">Find me</a>
</div>
이것이 귀하의 경우에 효과가 있습니까?
angular의 내부 및 외부 URL 형식 규칙은 약간 다릅니다.
$ location은 자체 애플리케이션 내에서 내부 경로를 활성화하는 수단입니다.
외부 링크 인 경우 $ http가 원하는 것입니다.
내부 링크 인 경우 해시 / 뱅 구문을 확인할 가치가 있는지 확인하십시오.
참고 URL : https://stackoverflow.com/questions/18665850/build-query-string-from-parameters-object
'IT박스' 카테고리의 다른 글
CSS와 함께 FontAwesome 또는 Glyphicons 사용 : before (0) | 2020.10.19 |
---|---|
MySQL에서 가장 가까운 정수로 내림하는 방법은 무엇입니까? (0) | 2020.10.19 |
Swift에서 @autoreleasepool과 동등한 것은 무엇입니까? (0) | 2020.10.19 |
Windows에서 Python의 로케일을 설정하는 올바른 방법은 무엇입니까? (0) | 2020.10.19 |
오래 실행되는 PHP 스크립트를 관리하는 가장 좋은 방법은 무엇입니까? (0) | 2020.10.19 |