1

我正在构建一个表单,以允许某人通过 Web GUI 更改按钮的颜色,以在网页上使用。它设置为通过 ajax 和 jquery 提交更改,以便在用户单击保存提交按钮之前进行预览,这样他们就可以在保存更改之前确保他们喜欢这些更改。

我知道 .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 调用似乎过于复杂,即使它会停止保存按钮的工作。为什么不直接在更改事件中执行 Ajax 预览部分并通过保存按钮(已经是提交按钮)让提交自然发生?完全删除提交处理程序。

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

单击 Save 按钮时,请求将包含一个save带有 value的参数Save,因此您可以在 PHP 中对此进行测试。当通过 Ajax 发出请求时,save不会提交参数。

于 2012-07-20T02:41:11.287 回答
0

添加一个隐藏的输入,当您更改颜色值时会更新,这将具有serialize()能够

编辑 我明白我没有解决您的问题,为什么不在onclick您的按钮上添加一个单击时调用该功能的按钮?

于 2012-07-20T02:33:48.143 回答