IT박스

매개 변수 개체에서 쿼리 문자열 작성

itboxs 2020. 10. 19. 07:53
반응형

매개 변수 개체에서 쿼리 문자열 작성


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()내부적으로 함수를 사용하여 매개 변수 개체에서 쿼리 문자열을 만듭니다. 지금 $HttpProvidereval()마술 을하고 싶지 않으면 비공개이기 때문에 코드에서 사용하는 것은 불가능합니다 .

github 관련 문제 :


당신이 정말로 잘못된 나무를 짖는 것 같다고 믿으십시오 ... $ http.get (url, config) 또는 $ http.post (url, data, config)를 제공하는 $ http 서비스를 살펴 봐야합니다. 매개 변수가있는 GET 요청은 다음 SO를 참조하십시오.

$ http get 매개 변수가 작동하지 않습니다.

$ http 및 작동 방식에 대한 정보는 Angular 문서를 참조하십시오.

http://docs.angularjs.org/api/ng.$http

아마도 내가 목표를 오해하고 있으며 실제로 다른 장소로 이동하고 싶을 수도 있습니다. 여기서 제가 제안하는 것은 백그라운드 (AJAX 스타일)에서 요청하는 것입니다.

http://jsfiddle.net/4ZcUW/

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

반응형