2014-12-13 174 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之前命名任何東西,你喜歡這裏是一個如何編寫導航「關於我們」的例子

如果需要我可以發送給你一個空白模板