0

我需要序列化表单输入以使用 jQuery 向 php 脚本发送 Ajax 调用,并且每次我尝试打印出表单的值时,它都会给出空数组。HTML 表单

<form class="form-horizontal" id="generateCompression" method="post">
    <fieldset>
        <div class="control-group"><label class="control-label">Checkboxes</label>
            <div class="controls">
                <input type="checkbox" name="names[]" value="Jan-2011"> Jan-2013</label>
                <input type="checkbox" name="names[]" value="Jan-2012"> Jan-2013</label>
                <input type="checkbox" name="names[]" value="Jan-2013"> Jan-2013</label>
            </div>
        </div>
        <div class="form-actions">
            <button type="submit" class="btn btn-primary">Generate</button>
            <button type="reset" class="btn">Cancel</button>
        </div>
    </fieldset>
</form>

Javascript

$(document).ready(function(){
    $("#result").hide(); 
    $("#generateCompression").submit(function(){
        $.ajax({
            url: "compare-action.php",
            type:  "POST",
            data: $("#generateCompression").serialize(),
            async: true,
            beforeSend : function (){  
                $("#loading").show();
                $("#reportFilecreate").fadeOut();
            },
            success: function(response) {
                $("#loading").hide();                                 
                $("#error").show();
                $("#error").html(response);
            }            
        });
        return false;
    });      
});

这是PHP文件

<?php
$inputs = $_POST;
print_r($inputs);
?>
4

2 回答 2

1

如果至少有一个复选框未被选中,则复选框不会向服务器发送任何内容。

您的脚本需要检查您的表单域是否存在,如果表单域不存在,那么您就知道没有检查任何内容。

要进行测试,只需在表单中添加一个文本框,然后再次运行您的脚本。

于 2013-07-29T08:48:48.150 回答
0

尝试这个。在一个变量中发送序列化数据,例如

$.ajax({
           url: "compare-action.php",
           type:  "POST",
           traditional: true,
           data: {
               "test_data" : $("#generateCompression").serialize()
                 },
           async: true,
           beforeSend : function (){  
                            $("#loading").show();
                            $("#reportFilecreate").fadeOut();
                        },
           success: function(response) {
                          $("#loading").hide();                                 
                          $("#error").show();
                          $("#error").html(response);
                     }            
        });

在 compare-action.php 文件中

print_r($_POST("test_data"));
于 2013-07-29T09:09:41.723 回答