2017-07-10 66 views
1

我有一個簡單的鐵AJAX元件是這樣的:聚合物,鐵ajax和PHP後端 - 如何接收數組?

<iron-ajax id="ajax_email"></iron-ajax> 

再後來在JavaScript我一些參數添加到請求,其中之一是一個數組:

var request = this.$$("#ajax_email"); 
request.params.to = "[email protected]"; 
request.params.subject = "a cool test"; 
request.params.content = "some content"; 
var cc = ["[email protected]", "[email protected]", "[email protected]"] 
request.params.cc = cc; 
request.generateRequest(); 

我有一個簡單PHP腳本採用所有這些參數,但無法弄清楚如何接收「cc」數組。

如果我嘗試用GET方法,鐵的Ajax生成這樣的查詢字符串:

[email protected]&[email protected]&[email protected] 

,而不是

url?cc[][email protected]&cc[][email protected]&cc[][email protected] 

所以,$ _GET [ 「CC」]在PHP中只得到數組的最後一個值,「[email protected]」。

當我嘗試POST方法代替,$ _ POST常是空的......

任何人都知道如何通過與鐵阿賈克斯陣?

回答

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); 
    } 
    } 
} 
1

你可以使用JSON.stringify(array)把你的數組在JavaScript字符串和解析它在PHP對象在你的後端,使用json_decode($_GET['array'])。這應該與鐵阿賈克斯的params

+0

這是一個好主意,coudl也工作 - 謝謝! – Hubert