programing

매개 변수 개체에서 쿼리 문자열 빌드

showcode 2023. 3. 11. 09:39
반응형

매개 변수 개체에서 쿼리 문자열 빌드

Angularjs에서 쿼리 파라미터를 사용하여 URL을 작성하는 방법.

API $location이 표시됩니다.검색()

문제는 $location(url)이 URL로 리다이렉트된다는 것입니다.제 경우 쿼리 파라미터의 URL과 key:값 쌍을 전달하고 URL을 만들고 싶습니다.

url:/a/b/c파라미터:{field1: value1, field2: value2}

결과:/a/b/c?field1=value1&field2=value2

링크에는 이 URL을 사용합니다.각도 부호화도 본 적이 있습니다.?,&성격.이거 피할 수 있어요?

편집:

url을 앵커 요소에 href로 사용하려고 했습니다.$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 관련 문제:

잘못 짚은 것 같은데...$syslog.get(url, config) 또는 $http.post(url, data, config)을 제공하는 $syslog 서비스를 살펴봐야 합니다.파라미터가 있는 GET 요구에 대해서는 다음 SO를 참조해 주십시오.

$190 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 형식과 외부 URL 형식 규칙은 약간 다릅니다.

$location은 어플리케이션 내에서 내부 루트를 활성화하는 수단입니다.

외부 링크라면 $http가 좋습니다.

내부 링크인 경우 해시/방 구문을 확인할 필요가 있을 수 있습니다.

언급URL : https://stackoverflow.com/questions/18665850/build-query-string-from-parameters-object

반응형