2

我想知道如何通过 XHR 请求传递 PHP 表单数组。我正在构建一个用于处理 Symfony2 表单的 RESTful API。某些表单元素必须填写令人毛骨悚然的数据,例如:

foo_form[bar][] = 1
foo_form[bar][] = 2

我的问题是,如何通过 JS 库中的 XHR 请求发送它。

var client = FooHttpClient(options);

var data = {
    'foo_form[bar][]' : 1,
    'foo_form[bar][]' : 2
};

client.send(data);

这里的问题是,第一个数据值(foo_form[bar][] = 1)将被第二个值覆盖。

有没有人解决这个问题?

问候,

——马克

4

4 回答 4

1

PHPjson_encode()专门为此提供了函数。

json_encode()将 PHP 数组或对象结构转换为 JSON 字符串。JSON 是一种与 Javascript 直接兼容的序列化数据格式(JSON 代表 Javascript Object Notation)。

一旦 JSON 字符串出现在您的 Javascript 代码中,您就可以对其进行解码,JSON.parse()以将其转换为 JS 对象。(请注意,较旧的浏览器 - 例如 IE6 - 不支持此功能,因此您可能需要使用库来解析它(您可能FooHttpClient内置了此功能;我们FooHttpClient对问题的了解不够多,无法提供帮助不过,你同意了)。

PHP 还具有json_decode()将有效的 JSON 字符串转换回 PHP 数组的功能,因此您还可以将 JSON 数据从 JS 发送回您的 PHP 程序。

几乎所有语言都具有 JSON 编码/解码功能,因此 JSON 是一种很好的跨语言通信数据格式。

于 2013-10-12T09:56:53.027 回答
0
var data = [
{'foo_form[bar][]' : 1},
{'foo_form[bar][]' : 2}
];   //array of json objects
于 2013-10-12T09:55:57.460 回答
0

由于data传递给send将被转换为 urlencoded POST 数据,请尝试使用 JavaScript 对象结构:

var data = {
    "foo_form": {
        "bar": [1,2]
    }
};

如果 API 不处理多个级别的对象/数组,您仍然可以使用您的尝试,但将数字索引添加到数组:

var data = {
    'foo_form[bar][0]' : 1,
    'foo_form[bar][1]' : 2
};
于 2013-10-12T10:12:47.787 回答
0

加入数组并将其转换为逗号分隔的列表,然后您可以将其作为 URL 参数传递。然后在另一边使用 GET 并将列表分解回数组。

于 2013-10-12T09:43:53.440 回答