2

したがって、次のようなJSON配列があります。

var myData = {
    foo : {
        biz : 'baz',
        fig : 'tree'
    }
}

これは、次のようにアドレスバーに入力できます。

http://www.mysite.com/index?foo[biz]=baz&foo[fig]=tree

そして、これは期待どおりに機能します。

問題は、このmyDataオブジェクトを次のようにAngularJSの$httpサービスに提供する場合です。

$http.get('http://www.mysite.com', {
    data : myData
});

クエリ文字列をエスケープし、奇妙な方法でエスケープされていなくても、正しい形式であるようには見えません。次のようになります。

url?foo=%7B%22biz%22%3A%22baz%22%2C%22fig%22%3A%22tree%22%7D

どうすればこれを機能させることができますか?

4

1 に答える 1

3

これは実際には正しい形式です。バックエンドが PHP であると仮定すると、$_GET['foo']そうすると%7B%22biz%22%3A%22baz%22%2C%22fig%22%3A%22tree%22%7D. 表示される奇妙な文字は、Angular が文字列を URL エンコードしているためです。これは、データを送信する前に行う必要があります。ブラウザと同じようfoo[biz]=baz&foo[fig]=treeに入力すると、通常、ブラウザは自動的に URL コード化します。

この後urldecodingjson_decoding期待するデータが得られます。

$foo = json_decode(urldecode($input), true);

Array
(
    [biz] => baz
    [fig] => tree
)

$foo['biz']その後、これらに次のようにアクセスできます。$foo['fig']

デモ

于 2013-03-03T23:47:08.403 に答える