【问题标题】:Get php variable from url on reload without refresh重新加载时从 url 获取 php 变量而不刷新
【发布时间】:2015-02-11 18:57:02
【问题描述】:

我正在从事一个业余项目(通常是一名设计师,所以对 php 不太熟悉 - 请监督所有或任何冗余代码),试图学习新事物。现在我遇到了一个我似乎不太了解的问题。 我有一个 index.php 用于显示 data.php 中的随机句子,这很好用——但是我希望能够在必要时为不同的人整理出特定类型的句子。这是通过包含 Designer、Illustrator 和 Developer 的下拉菜单完成的。

例如,如果您从下拉菜单中选择“开发者”,则页面会重新加载并在 URL 中显示 index.php?yrke=developer。这一切都很好,正如预期的那样,当我从 data.php 回显 $_GET['yrke']; 时,它会在第一次加载时显示文本“developer”,但是在单击 randomizerButton 按钮时(请注意,内容是从 data.php 加载的单击此按钮时不刷新浏览器中的页面)$_GET['yrke']; 似乎无法读取 url 中的值(将$_GET['yrke']; 放入index.php 显然无论如何都可以,但我需要访问data.php 中的 url 变量)。

如果有办法做到这一点,同时保持“update-content-without-browser-refresh”功能很棒,另一个最简单的解决方案可能是删除所说的“update-content-without-browser-刷新”并进行良好的旧刷新,从而解决问题 - 但为什么要让它那么容易呢?

index.php (摘录)

<button data-href="data.php" class="randomizerButton">Randomize sentences</button>

<form action="index.php" method="get">
    <select name="yrke" onchange="this.form.submit()">

        <option value="designer"<?=$_GET['yrke'] == 'designer' ? ' selected="selected"' : '';?>>Designer</option>
        <option value="illustrator"<?=$_GET['yrke'] == 'illustrator' ? ' selected="selected"' : '';?>>Illustrator</option>
        <option value="developer"<?=$_GET['yrke'] == 'developer' ? ' selected="selected"' : '';?>>Developer</option>

    </select>
</form>

<?php include('data.php'); ?>

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $('button.randomizerButton').click(function(){
                scriptUrl = $(this).attr('data-href');
                $.post(scriptUrl, function(response){
                    $('#results').html(response);
                });
            });
        });
    </script>

data.php (摘录)

    echo $_GET['yrke'];

【问题讨论】:

    标签: javascript php ajax variables url


    【解决方案1】:

    如果您想在data.php 上使用$_GET['yrke'],则必须使用$.get() 并且只需使用完整的网址,例如:

    $.get('data.php?yrke='+encodeURIComponent($('[name=yrke]').val()), function(response){
      $('#results').html(response);
    }
    

    我会用

    $.post('data.php', {yrke:encodeURIComponent($('[name=yrke]').val())}, function(response){
      $('#results').html(response);
    }
    

    data.php 上使用$_POST['yrke']。通常,我不会有以传统方式提交的表单。一切都与 AJAX 有关。

    【讨论】:

    • 感谢您的回答。因此,在这种情况下,主要与 AJAX 结合使用 $_POST['yrke'] 是有益的,对吗?
    【解决方案2】:

    不确定这是否会有所帮助,但您可以这样做......

            <div id ="content">
    
            <?php
            $pages_dir ='pages';
            if(!empty($_GET['p'])){
    
                $pages =scandir($pages_dir, 0);
                unset($pages[0], $pages[1]);
    
                $p = $_GET['p'];
    
                if (in_array($p.'.inc.php', $pages)){
                include($pages_dir.'/'.$p.'.inc.php');
                }else {
                    echo'Page not found';
                }
    
                }else{
                    include($pages_dir.'/home.inc.php');
    
                }
    
            ?>
    HERE
            </div>
    

    创建一个名为 pages 的文件夹,然后将文件夹中的文件命名为“aboutus.inc.php”等。文件扩展名的重要部分是 .inc.php ,你可以在 .inc.php 之前命名任何你喜欢的东西这里是如何编写导航“关于我们”的示例

    如果需要我可以给你发一个空白模板

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 2015-11-02
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      相关资源
      最近更新 更多