提交表单后,$ _ POST为空/空

时间:2018-06-26 10:17:26

标签: php jquery post

在开始之前,我已经完全了解其他十亿个帖子,但是由于某些原因(可能是我的编码不佳),答案不适用。

这是我的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 +'" />')
});

帖子仍然为空

2 个答案:

答案 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>