【问题标题】:how can I post checkbox form elements to a PHP script?如何将复选框表单元素发布到 PHP 脚本?
【发布时间】:2012-06-01 15:11:34
【问题描述】:

我正在尝试在 datatables.net 表中提交带有复选框元素的表单。

这个例子说明了我想要做什么:http://www.datatables.net/examples/api/form.html

但我希望发布值而不是警告消息(使用 PHP 脚本的表单操作)

我添加了这一行...

<form id="form" action="test.php" method="post">

并删除了警报...

alert( "The following data would have been submitted to the server: \n\n"+sData );

但我的 PHP 脚本只能看到使用 datatables.net 的寻呼机按钮发布在当前“页面”上的复选框值。在脚本中保留警告行,我确实看到了所有正确的复选框值。

如何删除警报并将序列化数据发布到我的 test.php 脚本?

【问题讨论】:

    标签: php jquery jquery-datatables


    【解决方案1】:

    jquery:

    $('#submit_to_test').click(function(){
      $.ajax({
      type: "POST",
      url: "test.php",
      data: $('#form').serialize(),
      success: function(data){
        alert(data);
      }
      });
    });
    

    在html中添加一个带有id的按钮,例如:

    <button id="submit_to_test">Submit</button>
    

    【讨论】:

    【解决方案2】:

    确保您已删除 alert("以下数据将已提交到服务器:\n\n"+sData ); 下方的 return false;

    您也可以删除整个表单提交功能,如下所示,因为它不再需要了

        $('#form').submit( function() {
        var sData = $('input', oTable.fnGetNodes()).serialize();
        alert( "The following data would have been submitted to the server: \n\n"+sData );
        return false;
    } );
    

    【讨论】:

    • 感谢您的建议。删除“return false”并不能解决问题。请参阅我的示例:blankinside.co.uk/solution1.php - 尝试从表格的多个“页面”中选择一个复选框。按下提交后,$_POST 数组在页面顶部输出。
    • 来自示例的前言:“这里的技巧是 DataTables 不包含当前未显示的 DOM 元素,因此您需要添加一个提交事件处理程序来收集所有从表中输入元素,然后使用方便的 jQuery serialize() 函数将数据串在一起。”所以,也许我的问题应该是如何使用行将变量 sData 从var sData = $('input', oTable.fnGetNodes()).serialize(); 发布到我的 PHP 脚本... &lt;form id="form" action="&lt;?PHP echo $PHP_SELF; ?&gt;" method="post"&gt;
    【解决方案3】:

    我想我今天很早就解决了这个问题,在寻找其他问题时我发现了你的问题,这是我的解决方案

    // 这将选择所有复选框或取消选择

    // 对于“全选”工作,您必须为此示例创建一个 ID 为“ib_seleccionar_todos”的隐藏输入 另一个名为“is_seleccionados”的输入用于发送到另一个 php 页面

    // 注意:这里的对象数据表名为“tbl_buscar_exalumnos_Table”,将其更改为您使用的那个

    $('#lnk_opt_seleccionar_todos').click( function(event){
        if ( $("#ib_seleccionar_todos").val() == 0 ){
            $(':input:checkbox.chk_seleccionado', tbl_buscar_exalumnos_Table.fnGetNodes()).attr("checked", "checked");
            $("#ib_seleccionar_todos").val(1);
        } else {
            $(':input:checkbox.chk_seleccionado', tbl_buscar_exalumnos_Table.fnGetNodes()).removeAttr("checked");
            $("#ib_seleccionar_todos").val(0);
        }
        event.preventDefault();
    });
    
    $("#btn_agregar_mailing").click( function(){            
         $("#frm_mailing").submit(); 
    });
    
    $('#frm_mailing').submit( function() {
        var sData = $('input', tbl_buscar_exalumnos_Table.fnGetNodes()).serialize();
        $('#is_seleccionados').val(sData);
    });
    

    那,将创建一个 SERIALIZE 数组。 像这样的

     [is_seleccionados] => chk_seleccionado%5B%5D=9755396&chk_seleccionado%5B%5D=9907119&chk_seleccionado%5B%5D=12955872&chk_seleccionado%5B%5D=13023863
    

    我这样在接收页面中爆炸的那个

    $is_seleccionados  = $_POST["is_seleccionados"];
    $ia_arma_selecciondos = explode("&", $is_seleccionados );
    
        foreach( $ia_arma_selecciondos  as $key => $value ){
            $ia_rut_selecc = explode("=", $value );
            $ia_seleccionado[] = $ia_rut_selecc[1];
        }
    
        $ia_seleccionado = array_values( array_unique($ia_seleccionado) );
        // $ia_seleccionado = array_values($ia_seleccionado);
        foreach( $ia_seleccionado  as $key => $ii_rut_value ){
           //DO SOMETHING with $key or $ii_rut_value
        }
    

    希望工作。 里卡多·穆尼奥斯 智利万岁!

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2013-10-14
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多