1

我有一个简单的 Iron-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 传递数组?

4

2 回答 2

1

您可以使用JSON.stringify(array)将数组转换为 JavaScript 中的字符串并在后端的 php 对象中解析它,使用json_decode($_GET['array']). 这应该适用于 Iron-ajaxparams

于 2017-07-13T20:06:41.237 回答
0

嗯,我最终用 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);
    }
  }
}
于 2017-07-11T15:50:37.653 回答