1

我现在正在酝酿这个问题一段时间,但我找不到答案。

我正在使用 Twitter Bootstrap 和 PHP/Mysql 开发一个应用程序,我有一个简单的表单,我想要一个 jquery 确认模式,如果单击 OK,则应该发布表单,如果单击 No,则不会发生任何事情。

现在我已经将表单和 jquery 简化到最低限度,但它仍然无法正常工作。

这是我现在的表格:

<div class="container-fluid">
    <div class="row-fluid">
        <form method="post" action="" data-confirm="Are you sure you want to delete?">
            <div class="span6">
                <div class="control-group">
                    <label class="control-label" for="inputIcon">Add New Network</label>
                        <div class="controls">
                        <div class="input-prepend">
                            <span class="add-on"><i class="icon-tag"></i></span>
                            <input class="input-xlarge span6" id="inputIcon" type="text" placeholder="Network Name" name="network">
                        </div>
                    </div>
                </div>
                <div class="control-group">
                    <label class="control-label" for="inputIcon">Network Timezone</label>
                        <div class="controls">
                        <div class="input-prepend">
                            <span class="add-on"><i class="icon-globe"></i></span>
                            <?php echo $this->timezones; ?>
                        </div>
                    </div>
                </div>
                <div class="form-actions">
                    <button type="submit" name="save_network" class="btn btn-primary"><i class="icon-ok icon-white"></i> Save Network</button>
                </div>      
            </div>

这是我正在使用的 jquery:

/* confirmation dialogs */
$(document).ready(function() {
    $('form[data-confirm]').submit(function() {
        var form = this;
        if (!$('#dataConfirmModal').length) {
            $('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>');
        }
        $('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm'));
        $('#dataConfirmModal').modal({
            show: true
        });
        $('a#dataConfirmOK').click(function() {
            $("form").submit();
        });
        return false;
    });
});

这是我的控制器中调用模型的函数

<?php

    // if settings form was submitted, save settings data
    if(isset($_POST['save_network']))
    {
        $this->model->insert_network('reports', $_POST);
    }

?>

我不想要ajax左右,只是一个简单的表单提交,奇怪的是当我手动提交表单时,它工作得很好。表单中的数据保存在数据库中,但是当我使用 jquery .submit(); 表单已提交,但没有保存任何内容。

任何帮助将不胜感激。

4

1 回答 1

1

在我的控制器中,我通过检查是否设置了按钮的名称值来检查表单是否已提交:

if(isset($_POST['save_network']))
{
$this->model->insert_network('reports', $_POST);
}

当您使用 JQUERY 提交表单时,永远不会点击按钮;因此:没有设置按钮名称...呃

抱歉尖叫 :D 但这让我忙了 6 个小时,直到我发现这确实是问题所在......我永远不会忘记的教训!

希望这对其他人有帮助:如果您使用 jquery 提交表单,并通过查看按钮名称来检查表单是否在 php 中提交...这就是您遇到的问题 jquery 直接提交表单,因此只有名称值表单字段的设置,而不是来自输入按钮本身的设置。


因此,不要使用以下方法检查表单是否已提交:

if(isset($_POST['save_network']))

也许应该更好地检查如下:

if($_SERVER['REQUEST_METHOD'] == "POST")
于 2012-10-15T11:51:55.403 回答