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

标签 get angularjs urlencode

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

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

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

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

然后您可以通过 $foo['biz']$foo['fig'] 来访问它们

Demo

关于get - AngularJS - 如何发送多维 $http.get() 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15192255/

相关文章:

javascript - JavaScript中的Unicode和URI编码、解码和转义

c# - JQuery ajax 调用 httpget webmethod (c#) 不工作

jQuery 切换 - 未捕获的类型错误 : undefined is not a function

javascript - 在 IE8 中按 Enter 键意外触发 ng-click

angularjs - 如何处理 Angular-ui-router 解析中的错误

javascript - AngularJS 处理格式化数字输入

android - 特殊字符的 URL 编码失败。 #安卓

css - 我需要在 CSS 数据 URI 中编码哪些字符?

php - 如何将 $_GET 路径与 file_exists 一起使用并保证其安全?

javascript - 获取多个元素: only return the last one