96

に関して$location.searchドキュメントは言う、

パラメータなしで呼び出された場合、現在の URL の検索部分を (オブジェクトとして) 返します。

私の URL では、クエリ文字列に?test_user_bLzgB値のないパラメーターがあります。また$location.search()、オブジェクトを返します。実際のテキストを取得するにはどうすればよいですか?

4

10 に答える 10

49

クエリ文字列をテキストとして表示する必要がある場合は、次を使用できます。$window.location.search

于 2013-08-30T13:33:53.953 に答える
40

$location.search()変数としてのキーとその値としての値で構成されるオブジェクトを返します。したがって、次のようにクエリ文字列を記述した場合:

?user=test_user_bLzgB

次のようにテキストを簡単に取得できます。

$location.search().user

?foo=bar のようなキーや値を使用したくない場合は、ハッシュ #test_user_bLzgB を使用することをお勧めします。

と呼び出し

$location.hash()

取得したいデータである「test_user_bLzgB」を返します。

追加情報:

クエリ文字列メソッドを使用し、$location.search() で空のオブジェクトを取得している場合、Angular が html5 戦略ではなくハッシュバン戦略を使用している可能性があります...それを機能させるには、この構成をモジュール

yourModule.config(['$locationProvider', function($locationProvider){
    $locationProvider.html5Mode(true);    
}]);
于 2014-07-29T02:51:12.603 に答える
13

最初に、クエリ文字列を取得するための正しい URL 形式を作成します#?q=stringを使用します

http://localhost/codeschool/index.php#?foo=abcd

$location サービスをコントローラーに注入する

app.controller('MyController', [ '$location', function($location) { 

    var searchObject = $location.search();

    // $location.search(); reutrn object 
    // searchObject = { foo = 'abcd' };

    alert( searchObject.foo );

} ]);

したがって、アウトプットはabcdでなければなりません

于 2015-02-09T21:04:43.880 に答える
10

これも使えます

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

var queryValue = getParameterByName('test_user_bLzgB');
于 2015-02-12T09:23:55.287 に答える
10

機能していない場合$location.search()は、次のものがあることを確認してください。

1)html5Mode(true)アプリのモジュール構成で構成されています

appModule.config(['$locationProvider', function($locationProvider) {
   $locationProvider.html5Mode(true);
}]);

2) <base href="/">HTML に存在する

<head>
  <base href="/">
  ...
</head>

参考文献:

  1. ベース href="/"
  2. html5モード
于 2016-05-13T19:16:14.167 に答える
0

非常に遅い回答:(しかし、必要な人にとっては、これは機能しますAngular jsも機能します:) URLSearchParamsこの新しいAPIを使用して場所から値を取得する方法を見てみましょう!

// "?post=1234&action=edit" と仮定

var urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.has('post')); // true
console.log(urlParams.get('action')); // "edit"
console.log(urlParams.getAll('action')); // ["edit"]
console.log(urlParams.toString()); // "?post=1234&action=edit"
console.log(urlParams.append('active', '1')); // "?

post=1234&action=edit&active=1"

参考:IEはサポートされていません

URLSearchParamsの代わりにこの関数を使用します

urlParam = function (name) {
    var results = new RegExp('[\?&]' + name + '=([^&#]*)')
                      .exec(window.location.search);

    return (results !== null) ? results[1] || 0 : false;
}

console.log(urlParam('action')); //edit
于 2020-12-07T07:00:33.387 に答える