在开始之前,我已经完全了解其他十亿个帖子,但是由于某些原因(可能是我的编码不佳),答案不适用。
这是我的jquery定位的HTML:
<!-- data epids array -->
<form method="post" id="id-form" class="hidden">
<input type="hidden" id="ids" value="" />
</form>
本质上,id是通过jquery在页面加载时添加的。我已经使用console.log($('#ids').val())
检查了数据,并按预期返回了数据。
然后我在jQuery中执行此操作:
//export to csv
$('#to-csv').on('click', function(e)
{
//stop default action
e.preventDefault();
//set form
var form = $('#ids-form'),
ids = $('#ids').val(),
data = [];
var splitIds = ids.split(', ');
for (var i = 0; i < splitIds.length; i++)
{
data.push({'id': splitIds[i]})
}
console.log(data); //this returns an object of correct data
//set form url, data + submit
form.attr('action', parts_url+ 'output-csv.php');
//I didn't think this was necessary, with or without, $_POST is still null
form.append(data);
form.submit()
});
对我来说这行得通,但是当我尝试使用$ _POST时,它为空。我试图像这样查看数组中的数据:
var_dump(file_get_contents('php://input'));
var_dump($_POST);
第一个返回一个空字符串,第二个返回一个空数组。
我不确定为什么它为空。难道我正在为一个数组使用一个输入,而输入中的字符长度没有潜伏的限制吗?
我该如何进行调试?
(ps可以帮助发布我的.ini文件吗?)
谢谢。
所以我尝试了我的最后一句话:
将HTML更改为:
<form method="post" id="ids-form" class="hidden">
<!--<input type="hidden" id="ids" value="" />-->
</form>
我的jquery:
//export to csv
$('#to-csv').on('click', function(e)
{
//stop default action
e.preventDefault();
//set form
var form = $('#ids-form');
//set form url, data + submit
form.attr('action', parts_url+ 'output-csv.php');
form.submit()
});
$('.rm-row').each(function()
{
var id = $(this).data('id');
$('#ids-form').append('<input type="hidden" class="id" value="'+ id +'" id="'+ id +'" />')
});
帖子仍然为空
答案 0 :(得分:1)
首先,data
是一个数组。因此form.append(data)
将对数组进行字符串化,并将其作为文本附加在HTML中。它不会在发送到服务器的请求中添加任何数据。
第二,form
的{{1}}为id
,而jQuery选择了id-form
。
第三,您的$('#ids-form')
为空,因为HTML中的$_POST
没有input
属性。
name
解决了这些问题后,您的逻辑将正常工作。
答案 1 :(得分:0)
代替此:
<!-- data epids array -->
<form method="post" id="id-form" class="hidden">
<input type="hidden" id="ids" value="" />
</form>
尝试一下:
<!-- data epids array -->
<form method="POST" id="id-form" class="hidden">
<input type="hidden" id="ids" name="abc" value="Something_data" />
</form>