Polymer、iron-ajax 和 PHP 后端 - 如何接收数组?
Polymer, iron-ajax, and PHP back end - how to receive an array?
我有一个简单的铁-ajax元素,像这样:
<iron-ajax id="ajax_email"></iron-ajax>
然后在 javascript 中我向请求添加了一些参数,其中之一是一个数组:
var request = this.$$("#ajax_email");
request.params.to = "test@test.com";
request.params.subject = "a cool test";
request.params.content = "some content";
var cc = ["test1@test.com", "test2@test.com", "test3@test.com"]
request.params.cc = cc;
request.generateRequest();
我有一个简单的 PHP 脚本可以接受所有这些参数,但不知道如何接收 "cc" 数组。
如果我尝试使用 GET 方法,iron-ajax 会生成如下查询字符串:
url?cc=test1@test.com&cc=test2@test.com&cc=test3@test.com
而不是
url?cc[]=test1@test.com&cc[]=test2@test.com&cc[]=test3@test.com
所以,PHP中的$_GET["cc"]只获取数组的最后一个值,"test3@test.com".
当我尝试使用 POST 方法时,$_POST 始终为空...
谁知道如何用 iron 传递数组-ajax?
啊,好吧,我最终用 PHP 后端做了一个变通方法,从查询字符串中手动提取所有值。像这样:
$query = explode("&", $_SERVER['QUERY_STRING']);
$params = array();
foreach ($query as $param) {
if(!empty($param)){
$temp = explode('=', $param, 2);
if(isset($temp[1]) && $temp[1] !== ""){
list($name, $value) = explode('=', $param, 2);
$params[$name][] = urldecode($value);
}
}
}
您可以使用 JSON.stringify(array)
将数组转换为 JavaScript 中的字符串,并使用 json_decode($_GET['array'])
在后端的 php 对象中解析它。这应该适用于 iron-ajax 的 params
我有一个简单的铁-ajax元素,像这样:
<iron-ajax id="ajax_email"></iron-ajax>
然后在 javascript 中我向请求添加了一些参数,其中之一是一个数组:
var request = this.$$("#ajax_email");
request.params.to = "test@test.com";
request.params.subject = "a cool test";
request.params.content = "some content";
var cc = ["test1@test.com", "test2@test.com", "test3@test.com"]
request.params.cc = cc;
request.generateRequest();
我有一个简单的 PHP 脚本可以接受所有这些参数,但不知道如何接收 "cc" 数组。
如果我尝试使用 GET 方法,iron-ajax 会生成如下查询字符串:
url?cc=test1@test.com&cc=test2@test.com&cc=test3@test.com
而不是
url?cc[]=test1@test.com&cc[]=test2@test.com&cc[]=test3@test.com
所以,PHP中的$_GET["cc"]只获取数组的最后一个值,"test3@test.com".
当我尝试使用 POST 方法时,$_POST 始终为空...
谁知道如何用 iron 传递数组-ajax?
啊,好吧,我最终用 PHP 后端做了一个变通方法,从查询字符串中手动提取所有值。像这样:
$query = explode("&", $_SERVER['QUERY_STRING']);
$params = array();
foreach ($query as $param) {
if(!empty($param)){
$temp = explode('=', $param, 2);
if(isset($temp[1]) && $temp[1] !== ""){
list($name, $value) = explode('=', $param, 2);
$params[$name][] = urldecode($value);
}
}
}
您可以使用 JSON.stringify(array)
将数组转换为 JavaScript 中的字符串,并使用 json_decode($_GET['array'])
在后端的 php 对象中解析它。这应该适用于 iron-ajax 的 params