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在浏览器中一样输入它,浏览器通常会自动对其进行 urlencode。

之后urldecodingjson_decoding您将获得您期望的数据。

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

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

$foo['biz']然后,您可以访问这些$foo['fig']

演示

于 2013-03-03T23:47:08.403 回答