1

我确定我把事情复杂化了,但我试图用引用的 HTML 完成两件事。当用户选择一个选项时,如果它符合条件,我想将 leaderTable 的显示样式从隐藏切换为可见(这我已经成功地使用下面的 JS 完成了)

我还想将所选选项的值作为参数传递给 PHP 函数,该函数将设置我可以使用的 $_SESSION 变量。

据我了解,我必须使用 AJAX 请求将值传达给 php 脚本,但我并不完全了解 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。你需要几分钟才能理解它,但它可以在1 line中实现 AJAX 。

关于 AJAX POST 和 GET 的区别,你无所谓。你可以做任何一个。在您的 PHP 脚本中查找参数 using $_REQUEST[..],您将涵盖这两种情况。

最后,这里有一些想法:

  1. 如果您需要立即将值传达给服务器,则必须使用 AJAX
  2. 如果您不介意在将值传达给服务器时刷新页面,您可以跳过 AJAX,通过更改 JS 中的 window.location 并在 URL 中包含参数来完成。AJAX使用简单,避免刷新,所以更好..
  3. 如果您不需要立即将值传递给服务器,您可以将其保存在 JS 中作为 cookie(使用document.cookie),它会在用户发出的下一个请求时到达服务器。然后只需在 PHP 中使用$_COOKIE[..]
于 2013-02-12T18:23:31.120 回答
0

下面的代码将添加来自 google 的 jquery src,并在更改时向服务器发出 ajax 请求。有关更多信息,请参阅jQuery POST

<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 回答