1

Web GUI を介して Web ページで使用するボタンの色を変更できるようにするフォームを作成しています。ユーザーが保存送信ボタンをクリックする前にプレビューのために、jqueryを使用してajax経由で変更を送信するように設定されているため、変更を保存する前に変更が気に入っていることを確認できます。

.serialize() はボタン クリックの値を送信したり、ボタンがクリックされたことを通知したりしないことを理解しています。私はグーグルでstackoverflowを検索しましたが、セットアップでどのソリューションも機能させることができません。

PHP スクリプトは、保存ボタンがクリックされたかどうかをどのように判断できますか?

HTML:

<div id="preview"></div>

<form id="build_form" class="build_form" action="button_preview.php" method="post">
    <input name="color" type="radio" value="red" /> red
    <input name="color" type="radio" value="blue" /> blue
    <input name="save" type="submit" value="Save" class="button" />
</form>

Javascript:

<script type="text/javascript">
$(document).ready(function() {
    $(function() {
        $(".build_form").change(function() {
            $("form").submit();
        });
    });

    $('#build_form').submit(function() {
        $.ajax({
            data: $(this).serialize(),
            type: $(this).attr('method'),
            url: $(this).attr('action'), 
            success: function(response) {
                $('#preview').html(response);
            }
        });
        return false;
    });
});
</script>

PHP:

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

2 に答える 2

1

フォームを呼び出し.submit()、送信イベントを処理してデフォルトの送信を停止し、Ajax 呼び出しを行うことは、[保存] ボタンが機能しなくなるという事実を除けば、非常に複雑に思えます。change イベントで Ajax プレビュー部分を直接実行し、[保存] ボタン (既に送信ボタンになっています) を介して送信が自然に行われるようにしないのはなぜですか? 送信ハンドラーを完全に削除します。

$(function() {
    $("#build_form").change(function() {
        $.ajax({
            data: $(this).serialize(),
            type: $(this).attr('method'),
            url: $(this).attr('action'), 
            success: function(response) {
                $('#preview').html(response);
            }
        });
    });
});

[保存] ボタンをクリックすると、リクエストにsavevalueのパラメーターが含まれるSaveため、PHP でそれをテストできます。リクエストが Ajax 経由で行われた場合、パラメーターsaveは送信されません。

于 2012-07-20T02:41:11.287 に答える
0

serialize()色の値を変更すると更新される非表示の入力を追加します。これにより、

編集 私はあなたのポイントに対処しなかったようonclickですが、クリックすると関数を呼び出すボタンを追加してみませんか?

于 2012-07-20T02:33:48.143 に答える