AngularJS - 如何发送多维$ http.get()数据

时间:2013-03-03 23:35:13

标签: get angularjs urlencode

所以我有一个看起来像这样的JSON数组:

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

这可以输入地址栏,如:

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

这将按预期工作。

问题在于,当我向AngularJS的myData服务提供此$http对象时,如:

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

它转义了查询字符串,即使它没有以奇怪的方式被捕获,也看起来甚至不是正确的格式。它看起来像:

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

我该如何做到这一点?

1 个答案:

答案 0 :(得分: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,则浏览器通常会自动对其进行自动编码。

urldecodingjson_decoding之后,您将获得所需的数据。

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

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

然后,您可以$foo['biz']$foo['fig']

访问这些内容

Demo