【问题标题】:AngularJS - How to send multidimensional $http.get() dataAngularJS - 如何发送多维 $http.get() 数据
【发布时间】:2013-03-03 23:35:12
【问题描述】:

所以我有一个看起来像这样的 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

我怎样才能做到这一点?

【问题讨论】:

  • 发布数据可能会更好... GET 有字符长度限制

标签: get angularjs urlencode


【解决方案1】:

这实际上是正确的格式。假设您的后端是 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'] 访问这些文件

Demo

【讨论】:

  • 完美运行。感谢您的快速回复!
猜你喜欢
  • 2020-10-15
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多