我想知道如何通过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)
将被第二个值覆盖。
有没有人可以解决这个问题?
问候,
- 马克
答案 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]
}
};