所以我有一个看起来像这样的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
我该如何做到这一点?
答案 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
,则浏览器通常会自动对其进行自动编码。
在urldecoding
和json_decoding
之后,您将获得所需的数据。
$foo = json_decode(urldecode($input), true);
Array
(
[biz] => baz
[fig] => tree
)
然后,您可以$foo['biz']
和$foo['fig']