jQuery ajax表单在同一页面上标识不同的表单

时间:2012-05-23 17:18:15

标签: php jquery ajax

我在php中创建了一个表单。我在文档中使用了3种不同的形式。所以我必须区分这些形式。因此我使用提交“name-tag”。

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if (isset($_POST['submit_1'])) {
        ....
    }
    if (isset($_POST['submit_2'])) {
        ....
    }
    if (isset($_POST['submit_3'])) {
        ....
    }
}

这是我检查这些不同提交按钮的方式。

但我注意到我需要在JS中使用click函数而不是submit函数(因为表单不应该通过页面重新加载提交)

$('.erzaehlcafe_submit').click(function(){
    if ($('#year_from').val() == 'none' || $('#month_from').val() == 'none' 
            || $('#day_from').val() == 'none' || $('#topic').val() == '' || $('#contributer').val() == '' 
            || $('#begin').val() == '' || $('#place').val() == '' || $('#entrance').val() == '') {
        $("#dialog_empty").dialog( "open" );
        return false;
    }
    var form = $('#erzaehlcafe_add');  
    var data = form.serialize(); 

    $.ajax({
        url: "index.php?section=events",
        type: "POST",
        data: data,
        success: function (reqCode) {
        alert(reqCode);
            if (reqCode == 1) {
                //Date inserted into DB
                $("#dialog_add_event").dialog( "open" );
            } else {
                $("#dialog_add_event_error").dialog( "open" );
            }
        }
    });
    return false; //dont submit form
});

那么如何在这些形式之间做出改变呢? (所有这些都使用相同的名称进行相同的输入)。

解决问题的唯一方法是为所有输入类型定义其他名称索引。还有其他办法吗?

编辑:这是我的模板(请记住我使用了submit_1,submit_2和submit_3而不是erzaehlcafe_submit等等,以使其更精确)

<div id="event_accordion">
<h3><a href="#">Erzählcafé hinzufügen</a></h3>
<div>
    <form id="erzaehlcafe_add" action="index.php?section=events" method="post" accept-charset="utf-8">
        <table>
            <tr>
                <td>Datum:</td>
                <td>
                    <select name="day_from" id="day_from">
                        <option value="none" class="bold italic">Tag</option>
                            <?php
                                for($i=1; $i<=31; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="month_from" id="month_from">
                        <option value="none" class="bold italic">Monat</option>
                            <?php
                                for($i=1; $i<=12; $i++){
                                    echo "<option value=\"".$i."\">".$month_name[$i]."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="year_from" id="year_from">
                        <option value="none" class="bold italic">Jahr</option>
                            <?php
                                for($i=2008; $i<=$year; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Thema:</td>
                <td><input type="text" name="topic" id="topic" /></td>
            </tr>
            <tr>
                <td>Referent:</td>
                <td><input type="text" name="contributer" id="contributer" /></td>
            </tr>
            <tr>
                <td>Beginn:</td>
                <td><input type="text" name="begin" id="begin" /> Uhr</td>
            </tr>
            <tr>
                <td>Ort:</td>
                <td><input type="text" name="place" id="place" /></td>
            </tr>
            <tr>
                <td>Eintritt:</td>
                <td><input type="text" name="entrance" id="entrance" /> €</td>
            </tr>
        </table>
        <br />
        <div id="add_erzaehlcafe">
            <input type="submit" id="small" class="erzaehlcafe_submit" name="erzaehlcafe_submit" value="speichern">
        </div>
    </form>
</div>
<h3><a href="#">Vortrag hinzufügen</a></h3>
<div>
    <form name="vortrag_add" action="index.php?section=events" method="post" accept-charset="utf-8">
        <table>
            <tr>
                <td>Datum:</td>
                <td>
                    <select name="day_from">
                        <option value="0" class="bold italic">Tag</option>
                            <?php
                                for($i=1; $i<=31; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="month_from">
                        <option value="0" class="bold italic">Monat</option>
                            <?php
                                for($i=1; $i<=12; $i++){
                                    echo "<option value=\"".$i."\">".$month_name[$i]."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="year_from">
                        <option value="0" class="bold italic">Jahr</option>
                            <?php
                                for($i=2008; $i<=$year; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Thema:</td>
                <td><input type="text" name="name_topic" id="name_topic" /></td>
            </tr>
            <tr>
                <td>Referent:</td>
                <td><input type="text" name="name_contributer" id="name_contributer" /></td>
            </tr>
            <tr>
                <td>Beginn:</td>
                <td><input type="text" name="name_begin" id="name_begin" /> Uhr</td>
            </tr>
            <tr>
                <td>Ort:</td>
                <td><input type="text" name="name_place" id="name_place" /></td>
            </tr>
            <tr>
                <td>Eintritt:</td>
                <td><input type="text" name="name_entrance" id="name_entrance" /> €</td>
            </tr>
        </table>
        <br />
        <div id="add_vortrag">
            <input type="submit" id="small" class="vortrag_submit" name="vortrag_submit" value="speichern">
        </div>
    </form>
</div>
<h3><a href="#">Ausstellung hinzufügen</a></h3>
<div>
    <form name="ausstellung_add" action="index.php?section=events" method="post" accept-charset="utf-8">
        <table>
            <tr>
                <td>Von:</td>
                <td>
                    <select name="day_from">
                        <option value="0" class="bold italic">Tag</option>
                            <?php
                                for($i=1; $i<=31; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="month_from">
                        <option value="0" class="bold italic">Monat</option>
                            <?php
                                for($i=1; $i<=12; $i++){
                                    echo "<option value=\"".$i."\">".$month_name[$i]."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="year_from">
                        <option value="0" class="bold italic">Jahr</option>
                            <?php
                                for($i=2008; $i<=$year; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Bis:</td>
                <td>
                    <select name="day_till">
                        <option value="0" class="bold italic">Tag</option>
                            <?php
                                for($i=1; $i<=31; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="month_till">
                        <option value="0" class="bold italic">Monat</option>
                            <?php
                                for($i=1; $i<=12; $i++){
                                    echo "<option value=\"".$i."\">".$month_name[$i]."</option>\n";
                                }
                            ?>
                    </select>
                    <select name="year_till">
                        <option value="0" class="bold italic">Jahr</option>
                            <?php
                                for($i=2008; $i<=$year; $i++){
                                    echo "<option value=\"".$i."\">".$i."</option>\n";
                                }
                            ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Thema:</td>
                <td><input type="text" name="name_topic" id="name_topic" /></td>
            </tr>
            <tr>
                <td>Aussteller:</td>
                <td><input type="text" name="name_contributer" id="name_contributer" /></td>
            </tr>
            <tr>
                <td>Eintritt:</td>
                <td><input type="text" name="name_entrance" id="name_entrance" /></td>
            </tr>
        </table>
        <br />
        <div id="add_ausstellung">
            <input type="submit" id="small" class="ausstellung_submit" name="ausstellung_submit" value="speichern">
        </div>
    </form>
</div>
<h3><a href="#">Termine bearbeiten/löschen</a></h3>
<div>
    <button id="edit_event">Termin bearbeiten</button>
</div>

2 个答案:

答案 0 :(得分:1)

使用<input type="hidden">向每个form添加name="submit_X"input type="submit"似乎忽略了serialize();元素。

示例:

<input type="text"​​​​​​​​​​​​ id="year_from" name="year_from" />
<!-- More inputs.... -->
<input type="hidden" name="submit_1" value="true" />​​​​​​​​​​​​​​​​​

您还可以使用JavaScript为POST数据添加另一个密钥。

看看这个小提琴:http://jsfiddle.net/cd7Yy/

答案 1 :(得分:0)

您也需要显示HTML。

但是从我看到的情况来看,如果您在表单中的按钮上使用OnClick事件,则可以在HTML中使用不同的名称为不同的表单创建按钮,然后在PHP中使用 您在$ _POST

中收到的名称