代码之家  ›  专栏  ›  技术社区  ›  treyBake user1850175

提交表单后,$\u post为空/为空

  •  1
  • treyBake user1850175  · 技术社区  · 8 年前

    在我们开始之前,我已经充分意识到了这方面的其他十亿篇文章,但是由于某些原因(我的代码可能不好),答案并不适用。

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

    邮局还是空的

    2 回复  |  直到 8 年前
        1
  •  1
  •   Rory McCrossan Hsm Sharique Hasan    8 年前

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

    其次, form 有一个 id 属于 id-form 然而jquery选择: $('#ids-form') 是的。

    第三,你的 $_POST 是空的,因为 input 在html中没有 name 属性。

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

    一旦你解决了这些问题,你的逻辑就会运行良好。

        2
  •  0
  •   Prasanna Mane    8 年前

    而不是这个:

    <!-- 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>
    
    推荐文章