通过xhr请求传递PHP数组

时间:2013-10-12 09:40:49

标签: javascript php ajax

我想知道如何通过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 个答案:

答案 0 :(得分:1)

PHP专门为此提供json_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是跨语言通信的良好数据格式。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

var data = [
{'foo_form[bar][]' : 1},
{'foo_form[bar][]' : 2}
];   //array of json objects

答案 3 :(得分:0)

由于传递给data的{​​{1}}将转换为urlencoded的POST数据,请尝试使用JavaScript对象结构:

send

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

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