这是我的代码:
$(document).on('click', '#csv_export', function () {
// I need to pass this array to where the form below submits
var arr = ['item1', 'item2'];
$('<form action="csv_export/person?filename=export.csv" method="POST"/>')
.append($('{!! csrf_field() !!}<input type="hidden" name="type" value="save">'))
.appendTo($(document.body)) //it has to be added somewhere into the <body>
.submit();
});
正如我在我的代码中所评论的那样,我需要将arr
传递给表单指出的页面。我怎么能这样做?
注意到我可以把它放在表格中:
<input type="hidden" name="arr" value="'+arr+'">
但我有两个问题:
答案 0 :(得分:0)
使用Comparator
将数组转换为JSON。而不是将输入构造为字符串,使用jQuery函数来执行此操作:
JSONObject.writeJSONString(Map,Writer)
在PHP脚本中,使用JSON.stringify()
来获取数组。
您还应该能够使用AJAX:
$('<form action="csv_export/person?filename=export.csv" method="POST"/>')
.append($('{!! csrf_field() !!}'))
.append($("<input>", {
type: 'hidden',
name: 'arr',
value: JSON.stringify(arr)
});
).appendTo('body')
.submit();
对于小数组,您可以使用json_decode($_POST['arr'], true)
然后访问$.post('csv_export/person?filename=export.csv', { arr: JSON.stringify(arr) });
作为数组。但是当你传递这样的数组时,每个元素都会成为一个单独的post参数,默认情况下PHP只允许1000个参数。您可以在{ arr: arr }
中更改此设置,但对于这种情况,使用JSON可能是一种更简单的解决方案。