1

私は物事を複雑にしすぎていると確信していますが、参照されている HTML で 2 つのことを達成しようとしています。ユーザーがオプションを選択すると、条件を満たしている場合、leaderTable の表示スタイルを非表示から表示に切り替えたいと思います (これは、次の JS で正常に実行されました)。

また、使用できる $_SESSION 変数を設定する PHP 関数に、選択したオプションの値を引数として渡したいと考えています。

私の理解では、値をphpスクリプトに伝えるにはAJAXリクエストを使用する必要がありますが、AJAX POSTとGETを完全には理解していません。

HTML

<select id="rate_type" name="rate_type">
<option value="">Select One</option>
<option value="1">Non-Supervisors</option>
<option value="2">Supervisors</option>
<option value="3">Manager</option>
<option value="4">Director</option>
<option value="5">Sales</option>
<option value="6">Executive</option>
</select>

JS

<script>
window.onload = function() {
      var eSelect = document.getElementById('rate_type');
        var leaderTable = document.getElementById('leadership');

        eSelect.onchange = function() {
            if((eSelect.selectedIndex == 2) || (eSelect.selectedIndex == 3) || (eSelect.selectedIndex == 4) || (eSelect.selectedIndex == 5) || (eSelect.selectedIndex == 6)){

                leaderTable.style.display= 'block';


                } else {

                leaderTable.style.display = 'none';

            }

        }
    }

</script>
4

2 に答える 2

1

まず第一に、「生の」JSを書く人はもうほとんどいません。生活を楽にするJSライブラリを使用してください。jQueryをお勧めします。理解するには数分かかりますが、AJAXを1行で実装できます。

AJAX POSTとGETの違いについては、関係ありません。どちらでもかまいません。PHPスクリプトで、を使用してパラメーターを探します$_REQUEST[..]。両方のケースについて説明します。

最後に、ここにいくつかのアイデアがあります:

  1. 値をサーバーにすぐに伝達する必要がある場合は、AJAXを使用する必要があります
  2. サーバーに値を伝達するときにページを更新してもかまわない場合は、AJAXをスキップして、JSのwindow.locationを変更し、URLにパラメーターを含めることで更新できます。AJAXは使い方が簡単で、更新を回避するので、より良いです。
  3. 値をすぐにサーバーに伝達する必要がない場合は、(を使用してdocument.cookie)CookieとしてJSに保存すると、ユーザーが次に行うリクエストでサーバーに到着します。次に、PHPでそれを探します。$_COOKIE[..]
于 2013-02-12T18:23:31.120 に答える
0

以下のコードは、googleからjquery srcを追加し、変更時にサーバーにajaxリクエストを送信します。詳細については、 jQueryPOSTを参照してください。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
        $('#rate_type').change(function() {
            if(($(this).val() == 2) || ($(this).val() == 3) || ($(this).val() == 4) || ($(this).val() == 5) || ($(this).val() == 6)){
                $('#leadership').show();
            } else {
                $('#leadership').hide();
            }

            // this is the shorthand post
            $.post(
                // the url
                '<?php echo $_SERVER['PHP_SELF'] ?>',
                // the request parameters to send
                {
                    rate_type: $('#rate_type').val(),
                    some_other_var: 'junk'
                },
                function(data) {
                    // do something here
                    console.log(data);
            });
        });
        // fire the change event on load if needed
        $('#rate_type').change();
});
</script>
于 2013-02-12T18:25:08.260 に答える