$ httpパラメータの取得が機能しない


93

これが機能しない理由を誰かが知っていますか?

$http
    .get('accept.php', {
        source: link,
        category_id: category
    })
    .success(function (data, status) {
        $scope.info_show = data
    });

これは機能します:

$http
    .get('accept.php?source=' + link + '&category_id=' + category)
    .success(function (data, status) {
        $scope.info_show = data
    });

回答:


191

get呼び出しの2番目のパラメーターは構成オブジェクトです。あなたはこのようなものが欲しい:

$http
    .get('accept.php', {
        params: {
            source: link,
            category_id: category
        }
     })
     .success(function (data,status) {
          $scope.info_show = data
     });

参照引数のセクションhttp://docs.angularjs.org/api/ng.$httpを詳細については


params上記のように使用すると、GETリクエストがを使用しない問題も解決されますdata。AngularJSは、jQueryが行うようにこれ自体を整理しません。(私はそれが良いことでも悪いことでもないと思います、違うだけで人々をつまずかせるかもしれません)
DanielM 2015年

paramsオブジェクト内のキー値プロパティが未定義になります。これはサービスによって異なる必要がありますか?
ウィネマッカ2015

2
また、paramsオブジェクトが空の場合、またはそのプロパティがすべてnullorの場合undefined、クエリ文字列には何も追加されません。
nfang

3

$http.getドキュメント、2番目のパラメータは、構成オブジェクトは、次のとおりです。

get(url, [config]);

GETリクエストを実行するためのショートカットメソッド。

コードを次のように変更できます。

$http.get('accept.php', {
    params: {
        source: link, 
        category_id: category
    }
});

または:

$http({
    url: 'accept.php', 
    method: 'GET',
    params: { 
        source: link, 
        category_id: category
    }
});

補足として、Angular 1.6.success はもう使用しないでください。.then代わりに次を使用してください:

$http.get('/url', config).then(successCallback, errorCallback);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.