将数组传递给JavaScript显示为对象

时间:2018-12-12 08:11:02

标签: javascript arrays

我有一个名为override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "main/login" { let mainController = segue.destination as! ViewController mainController.myvar = installer } else if segue.identifier == "Button1" let IPController = segue.destination as! IP_ModuleQuickStartViewController IPController.verified = installer } } 的多维数组,如下所示。它的索引0、1、2、3可能没有限制。

我正在使用codeigniter框架。 dataArray是使用模型返回的数据库中表的所有数据。

dataArray

当添加数据表行时,我通过onclick函数传递此数组,如下所示。 (在foreach中)

0:
status: "1"
added_by: "1"
added_on: "2018-12-12 07:01:23"
approved: 0
c _id: "4"

$('#table').DataTable().row.add([ x, //counter data[j]['action'], //data in foreach data[j]['status_1'], data[j]['description'], data[j]['timestamp'], '<input type="button" value="..." onclick="openModal(\'' + dataArray + '\')">' // this is passing array ]).draw(false); 功能如下。

openModal

console.log以上仅返回function openModal(data_array){ console.log(data_array); } 。我想获取数据并在此处添加foreach。但是数据没有显示。请对此提供帮助。

3 个答案:

答案 0 :(得分:1)

我将使用JSON.stringify / parse传递数组数据。

<div id="container"></div>
<script>
        var arr = [1,2,3];           

        function openModal(x) {
            x = JSON.parse(x);
            console.log(x);
        }

        document.querySelector("#container").innerHTML+="<input type='button' value='foo' onclick='openModal(\""+JSON.stringify(arr)+"\")'>";       
</script>

答案 1 :(得分:1)

首先,您应该向DataTable Row添加对象而不是数组。

$('#table').DataTable().row.add({ x, //counter data[j]['action'], //data in foreach data[j]['status_1'], data[j]['description'], data[j]['timestamp'], '<input type="button" value="..." onclick="openModal(\'' + dataArray + '\')">' // this is passing array}).draw(false);

第二, Console.log(data_array)总是显示对象,您可以使用Console.log(JSON.stringify(data_array)),或者如果您想要一个一显示项目,则可以用于或jQuery.each

答案 2 :(得分:1)

您需要先对参数进行字符串化

"<input type='button' value='foo' onclick='openModal(\"" + JSON.stringify(arr) + "\")'>";

然后解析调用函数

function openModal(data_array){
    console.log(JSON.parse(data_array)); 
}