0

Web アプリケーションに「少し」大きな問題があります。最初に、私は英語があまり得意ではないことを告白しなければなりません:)。

ajax (jquery を利用) に基づく非常に単純な html+css-Tabs と、各タブが個別の PHP サイトを要求することを実現しました。すべてのサイトには最小が含まれています。php-values と他の jquery-effects/-plugins を含む 1 つのフォーム。

主な問題は、すべてのタブのフォーム ビューです。ajax をロードしたフォームは完全ではなく、他のフォームは完全に空白でした。問題を特定し、いくつかのフィールドセットの 1 つで PHP コードを削除します。最後に、この 1 つのフィールドセットを表示し、フォームの残りの部分は空白でした。

CSS ベースのタブのみを使用し、ajax 機能を使用しない場合、フォームは完全に読み込まれます。

ajaxの問題は何ですか?私はそれを理解していません:P

以下は、フォームの 1 つの一部です。

 <form action="#" method="post" name="form_project" class="form_project mainform">
    <input type="hidden" name="uid" value="<?= issetGlobals('uid') ?>" />
    <table border="0" id="tbl-projects" cellspacing="0" cellpadding="5">
        <tr>
            <td colspan="2"><input type="checkbox" name="cb_newProject" onclick="actFieldset('#fs-newProject')" /> <label for="cb_newProject">Projekt erstellen</label></td>
        </tr><tr>
            <td>

            <fieldset id="fs-newProject" disabled="disabled"><legend>Projektverzeichnis erstellen</legend>
                <table border="0">
                    <tr>
                        <td><label for="projectName">Projektname</label></td>
                        <td><input type="text" name="projectName" value="" /></td>
                    </tr><tr>
                        <td><label for="projectManager">Projektleiter</label></td>
                        <td><select size="1" name="projectManager" id="projectManager">
                        <?php
                            foreach($DBma->getEmployees() as $value) {
                                if($value['uid'] == issetGlobals('uid'))
                                    echo '<option value="'.$value["uid"].'" selected="selected">'. convertString($value["name"]) .'</option>';
                                else
                                    echo '<option value="'.$value["uid"].'">'. convertString($value["name"]) .'</option>';
                            }
                        ?>
                            </select>
                        </td>
                    </tr>

そして、ここで「変換された」JSコード:

$('#tabs-nav li').each(function(i) {
    $(this).click(function(event){
        event.stopPropagation();
        Tab($(this).attr('id'));
    });
});

function Tab(key){
    $('#tabs-nav li').each(function() {
        $(this).removeClass('active');
    })
    $(key).addClass('active');

    $.ajax({
        url: 'tab-content.php?tab=' + key,
        type: 'get',
        beforeSend: function() {
            $(key + '-loading').html('<img src=\'images/ajax-loader.gif\' width=\'16\' height=\'16\' alt=\'Loading\' />');
        }
    }).done(function(responseText)  {
            $(key + '-loading').html("");
            $('#tabs-content').html(responseText);
        });
}
4

0 に答える 0