2014-12-13 70 views
2

我正在开发一个业余爱好项目(通常作为设计师工作,所以不是所有那些熟悉的PHP - 请监督所有或任何多余的代码),试图学习新的的东西。现在我遇到了一个我似乎不太喜欢的问题。 我有一个index.php用于显示data.php中的随机语句,这很好 - 但我希望能够根据需要为不同的人挑选特定类型的句子。这是通过包含Designer,Illustrator和Developer的下拉菜单完成的。获取php变量从url重新加载而不刷新

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

如果有一种方法可以做到这一点,同时保持“更新内容无浏览器刷新”功能,那很棒,另一个最简单的解决方案可能是删除“无内容更新内容” “刷新”,并进行良好的旧刷新,从而解决问题 - 但为什么使它容易吗?

的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']; 

回答

0

如果你想$_GET['yrke']data.php你将不得不使用$.get()只需使用fu LL网址,如:

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

我将在data.php使用

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

$_POST['yrke']。通常,我不会有以传统方式提交的表单。这都是关于AJAX的。

+0

谢谢你的回答。因此,在这种情况下,使用'$ _POST ['yrke']'将主要与AJAX结合使用,对吗? – Lenny 2014-12-13 01:22:28

0

不知道这是否会帮助,但你可以做这样的事情...

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

制作一个文件夹,名为页面然后将该文件夹“aboutus.inc.php” ECT中的文件。文件扩展名的重要组成部分是.inc.php,你可以在.inc.php之前命名任何东西,你喜欢这里是一个如何编写导航“关于我们”的例子

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