使用第二个函数将在Javascript函数中创建的数组传递给PHP脚本

时间:2017-09-01 13:07:33

标签: javascript php jquery html arrays

我在Javascript函数中创建了一个数组。现在,当我按下html页面上的按钮时,我想将此数组传递给php脚本。我试图通过调用以下函数来传递它:

function chimpSubscribers() {
var API_KEY = ''; // MailChimp API Key
var LIST_ID = ''; // MailChimp List ID
var SEGMENT_ID = ''; // Mailchimp Segment ID

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Subscribers");

var dc = API_KEY.split('-')[1];
var api = 'https://'+ dc +'.api.mailchimp.com/3.0';

var memberList = '/lists/'+LIST_ID +'/segments/'+ SEGMENT_ID
    options = {"headers": {"authorization": 'apikey '+API_KEY}};
    var apiCall = function(endpoint){
        apiResponseMembers = UrlFetchApp.fetch(api+endpoint,options);
        json = JSON.parse(apiResponseMembers);
        return json
    }

var members = apiCall(memberList);
if (members) {

  var d = new Date();
  var member_count = members.member_count;

  var report = [d,member_count,];

Logger.log(report);

// Clear MailChimp data in Spreadsheet
   sheet.clear();
// Append MailChimp data to Spreadsheet
   sheet.appendRow(["Date", "Total Subscribers"]);
   sheet.appendRow(report);
 }  
}

HTML的链接:

function transferarray(param){
$.ajax({
    type:"POST",
    url:'selection.php',
    data:{param:param}
});

(arr:数组的名称)

  

但这不起作用(注意:未定义的索引:param in   第17行的C:\ xampp \ htdocs \ DataDict \ selection.php。

阵列是否可以像这样访问?我怎么能让它可以访问?

请参阅我下面的代码创建数组:

<a href='selection.php' id="counter" onclick="transferarray(arr)"></a>

Javascript从一个表创建数组,其中复选框由另一个函数动态创建,这就是为什么我必须使用该变量来检查元素id。

2 个答案:

答案 0 :(得分:0)

出于任何人的兴趣,我没有设法通过ajax将数组传递给&#39; selection.php&#39;页面同时通过链接同时重定向到该页面。

我现在使用该链接创建一个子html网站,并将该数组直接传递给该网站上的Javascript:

function transferarray(param){  
   var Openwindow = null;
   Openwindow = window.open('selection.html','jav','width=800,height=900,resizable=yes');
   Openwindow.dataFromParent = param;

然后在子窗口中调用该数组

<script type="text/javascript">
var dataFromParent;    
function init() {
    var elem = document.getElementById('selectiontable');
    elem.innerHTML="";
    elem.insertAdjacentHTML('beforeend', '<thead><tr><th>Modul</th><th>Name</th><th>Variablename</th><th>Type</th><th>Code</th></tr></thead><tbody>');
    for (var x = 0; x < dataFromParent.length; x++) {
        elem.insertAdjacentHTML('beforeend', '<tr><td>' + dataFromParent[x][0] + '</td><td>' + dataFromParent[x][1] + '</td><td>' + dataFromParent[x][2] + '</td><td>' + dataFromParent[x][3] + '</td><td>' + dataFromParent[x][4] + '</td></tr>');
    }
    elem.insertAdjacentHTML('beforeend','</tbody>');
}
window.onload = init; 

我正在使用&#39; window.onload = init&#39;执行该功能是因为由于某种原因我无法通过

从父窗口调用它
  

&#39; Openwindow.init();&#39;

为什么?

答案 1 :(得分:-1)

使用JSON.stringify()序列化数组并发布数据

function transferarray(param) {
$.ajax({
    type: "POST",
    url: "selection.php",
    data: {param: JSON.stringify(param)}
    contentType: "application/json",
});

使用json_decode将您的数据转换为一组php嵌套数组。