【问题标题】:Polymer, iron-ajax, and PHP back end - how to receive an array?Polymer、iron-ajax 和 PHP 后端 - 如何接收数组?
【发布时间】:2017-07-10 18:32:55
【问题描述】:

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

【问题讨论】:

    标签: php polymer iron-ajax


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      嗯,我最终使用 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);
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多