1

私はしばらくの間この問題について繁殖していて、答えを見つけることができません。

TwitterBootstrapとPHP/MySQLを使用してアプリケーションを開発しています。単純なフォームがあり、jqueryでモーダルを確認します。[OK]をクリックするとフォームが投稿され、[いいえ]をクリックすると何も起こりません。

ここで、フォームと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 に答える