所以我有一个看起来像这样的 JSON 数组:
var myData = {
foo : {
biz : 'baz',
fig : 'tree'
}
}
可以在地址栏中输入如下内容:
http://www.mysite.com/index?foo[biz]=baz&foo[fig]=tree
这将按预期工作。
问题是,当我向 AngularJS 的 $http
服务提供这个 myData
对象时,如下所示:
$http.get('http://www.mysite.com', {
data : myData
});
它转义了查询字符串,即使它没有以奇怪的方式转义,它似乎也不是正确的格式。它看起来像:
url?foo=%7B%22biz%22%3A%22baz%22%2C%22fig%22%3A%22tree%22%7D
我怎样才能做到这一点?
最佳答案
这实际上是正确的格式。假设您的后端是 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。
经过urldecoding
和json_decoding
之后,您将获得您期望的数据。
$foo = json_decode(urldecode($input), true);
Array
(
[biz] => baz
[fig] => tree
)
然后您可以通过 $foo['biz']
和 $foo['fig']
来访问它们
关于get - AngularJS - 如何发送多维 $http.get() 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15192255/