【问题标题】:$_POST is empty/null after form submission表单提交后 $_POST 为空/null
【发布时间】:2018-06-26 10:17:25
【问题描述】:

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

这是我的 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);

第一个返回一个空字符串,第二个返回一个空数组。

我不知道为什么它是空的。会不会是我对一个数组使用一个输入,而输入的字符长度有一个不言而喻的限制?

如何进行调试?

(p.s 发布我的 .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 +'" />')
});

帖子还是空的

【问题讨论】:

    标签: php jquery post


    【解决方案1】:

    首先,data 是一个数组。因此form.append(data) 将对数组进行字符串化并将其作为文本附加到 HTML 中。它不会向发送到服务器的请求添加任何数据。

    其次,form 有一个 idid-form,但 jQuery 选择:$('#ids-form')

    第三,您的$_POST 是空的,因为HTML 中的input 没有name 属性。

    <form method="post" id="id-form" class="hidden">
      <input type="hidden" id="ids" name="ids" value="" />
    </form>
    

    一旦你解决了这些问题,你的逻辑就会正常工作。

    【讨论】:

    • 啊抱歉,这只是添加问题时的拼写错误(真实 ID 使用了我无法分享的某个名称 :))
    • 哪个是错字?表格idinput 上缺少name
    • 表单 ID - 现在尝试名称 :)
    • 你知道你什么时候觉得自己很蠢吗?哈哈,不敢相信我忽略了这个^^ ty
    • 发生在我们所有人身上 :) 很高兴为您提供帮助
    【解决方案2】:

    而不是这个:

    <!-- 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>
    

    【讨论】:

    • 这些值是 jquery 端自动生成的,所以这不起作用,但谢谢 :)
    • 欢迎,如果值是自动生成的,那你为什么要使用 html?
    • 因为附加到 dom 然后用 jquery 创建完整表单更容易
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    相关资源
    最近更新 更多