2012-05-22 85 views
2

因此,這裏是我在網絡上的第一個真正的編碼問題,因爲通常我試圖找到自己的東西,但他的時間,我真的被卡住了。從其他頁面獲取內容並使用URL參數

,看看我到目前爲止有:see this webpage


我想達到的目標:

公司,我在此刻要我創建「嚮導」的工作,通過選擇你的情況,並解決與WiFi有關的問題,並擴展它。最後,它需要在Joomla支持的網站上實現,所以我想要走的路是將所有內容加載到一個頁面中。


我如何接近它

我第一次去尋找一種方式來加載其他頁面到一個主頁。我通過使用JavaScript實現了這一點(Found on this website

找出後,我開始創建我的「後續」頁面,一切都很順利,直到我來到一個頁面,通過抓取URL參數來過濾它的內容。

對於感興趣的提示功能,人們看到了[此頁] [3]


什麼問題

我使用的if else循環,過濾掉可能的選項,如果找不到這些內容,頁面應該給我下面的「Het ziet er naar uit dat er iets fout is gegaan」或者用英文,「看起來出了什麼問題」。既然這是我得到的信息,事實上確實出錯了。在仔細查看我的代碼之後,我發現它可能是因爲它不抓取的URL參數。我想到了一個靜態頁面鏈接(只需將按鈕鏈接到一個獨特的頁面),但我做了一些計算,爲了工作,我需要大約70多頁,這感覺像是浪費。


守則

這是我到目前爲止的代碼:

我的主頁

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>EnGenius WiFi Wizard</title> 
    <link href="css/style.css" rel="stylesheet" type="text/css" /> 
    <script language="javascript" type="text/javascript" src="js/jquery.js"></script> 
    <script language="javascript" type="text/javascript" src="js/script.js"></script> 

    </head> 

    <body> 
    <script type="text/javascript"> 
    function loadContent(elementSelector, sourceUrl) { 
    $(""+elementSelector+"").load(""+sourceUrl+""); 
    } 
    </script> 
<div id="content"> 
    <h1>De WiFi Wizard</h1> 
    <h3>Snel en gemakkelijk een draadloze oplossing</h3> 

    <div id="btnholder" style="margin-top:15px;"> 
      <a href="javascript:loadContent('#content', 'speed.php');"><div   id="button">Mijn internet is te langzaam</div></a> 
      <a href="javascript:loadContent('#content', 'router.php');"><img   src="images/tip.png" style="float:left; margin-left:3px;" alt="WiFi tip" width="15"   height="15" onmouseover="tooltip.show('Internet snelheid word ook wel aangeduid met het   woord Bandbreete', 250);" 
    onmouseout="tooltip.hide();" /> 
      <div id="button" style="margin-left:10px;">Ik heb een router nodig,   Maar weet niet welke</div></a><img src="images/tip.png" style="float:left; margin-  left:3px;" alt="WiFi tip" width="15" height="15" onmouseover="tooltip.show('Een router is   een apparaat wat een netwerk met het internet verbind', 250);" 
    onmouseout="tooltip.hide();" /> 
    </div> 
    <h3>Wat is Wifi eigenlijk?</h3><br /> 

    <h4>WiFi is een verzameling van standaarden voor draadloze netwerken. 

    Wat houdt dit nou precies in? 
    Heel makkelijk gezegd: Internetten zonder lastige lange kabels! 
    Je kunt bv met jouw laptop lekker op de bank zitten en genieten van internet.<br />  <br /> 

    Als je thuis een draadloos netwerk wilt dan heb je een product nodig waar dus de   standaard/naam ‘802.11’ op staat.<br /> 
    Helaas zijn we in Nederland een behoorlijk bepakt (woon)gebied. Hierdoor kun je   bijvoorbeeld storing hebben op jouw (technische) producten die je thuis gebruikt.<br /><br   /> 

    Ook met WiFi kunnen er situaties voorkomen waarbij je geen optimaal gebruik kunt   maken van de oplossingen die worden aangeboden.<br /><br /> 
    Via deze website kom je op de hoogte wat nou al die termen eigenlijk betekenen en 
    welke oplossingen er zijn voor bepaalde situaties, kortom je wordt een echte WiFi   kenner!<br /> 
    <br /> 
    </h4>  
</div> 

    </body> 
    </html> 

我的第二頁內容

   <h1>De WiFi Wizard</h1> 
      <h3>Dus u heeft een probleem met de snelheid van uw internet? Dat gaan we oplossen!</h3> 
      <h3 style="font-size:10pt; color:#666666;">Wat is de afstand tussen uw computer en uw router?</h3> 

      <div id="btnholder" style="margin-top:15px;"> 
      <a href="javascript:loadContent('#content', 'detail.php?prob=010');"><div id="button">0-10 Meter</div></a> 
      <a href="javascript:loadContent('#content', 'detail.php?prob=1030');"><div id="button" style="margin-left:10px;">10-30 Meter</div></a> 
      <a href="javascript:loadContent('#content', 'detail.php?prob=30');"><div id="button" style="margin-top:10px; margin-left:90px;">Meer dan 30 Meter</div></a> 
      </div> 
      <br /> 
      <h3>Waarom is afstand zo belangrijk?</h3> 
      <br /> 

      <h4>Een WiFi signaal reist door de lucht, en kan worden verstoord door veel verschillende dingen zoals, muren, plafonds, andere apparaten, en andere WiFi signalen.</h4> 
      <h4>Daarnaast verliest een signaal na verloop van tijd zelf ook sterkte, net als met geluid dat je over een grotere afstand steeds slechter hoort. </h4> 
      <h4>Stel je voor dat je het signaal sterker kan maken, door een ander apparaat te gebruiken. Dat kan, omdat wij altijd onderdelen van hoge kwaliteit gebruiken, kunnen wij ervoor zorgen dat uw WiFi signaal een beter bereik heeft, en u dus een snellere verbinding krijgt.<br /> 
      <br /> 
      </h4>  

我的URL參數頁

  <h1>De WiFi Wizard</h1> 
      <?php 

      $prob = $_GET["prob"]; 

      if ($prob == 010) 
      { 
      echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel mensen er gebruik maken van het netwerk</h3>"; 
      } 

      if ($prob == 1030){ 

      echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel muren en/of plafonds er zich tussen de computer en de router bevindenk</h3>"; 
      } 

      if ($prob == 30){ 

      echo "<h3 style='font-size:10pt; color:#666666;'>Nu we de aftand weten moeten we uitvinden hoeveel mensen er gebruik maken van het netwerk</h3>"; 
      } 

      else{ 
      echo "<h3 style='font-size:10pt; color:#666666;'>Het ziet er naar uit dat er iets fout is gegaan</h3>"; 
      }     



      ?> 

      <div id="btnholder" style="margin-top:15px;"> 
      <?php 

      $prob = $_GET["prob"]; 

      if ($prob == 010) 
      { 
      echo "<a href='javascript:loadContent('#content', 'users.php?amnt=15');'><div id='button'>1-5 gebruikers</div></a> 
      <a href='javascript:loadContent('#content', 'users.php?amnt=5');'><div id='button'>Meer dan 5 gebruikers</div></a>"; 
      } 

      if ($prob == 1030){ 

      echo "<a href='javascript:loadContent('#content', 'pen.php?amnt=none');'><div id='button'>Geen plafonds of muren</div></a> 
      <a href='javascript:loadContent('#content', 'pen.php?amnt=1');'><div id='button'>1 Muur of Plafond</div></a> 
      <a href='javascript:loadContent('#content', 'pen.php?amnt=2');'><div id='button'>2 Muren of Plafonds</div></a> 
      <a href='javascript:loadContent('#content', 'pen.php?amnt=more');'><div id='button'>Meer dan 2 muren of plafonds</div></a>"; 
      } 

      if ($prob == 30){ 

      echo "<a href='javascript:loadContent('#content', 'users.php?amnt=15');'><div id='button'>1-5 gebruikers</div></a> 
      <a href='javascript:loadContent('#content', 'users.php?amnt=5');'><div id='button'>Meer dan 5 gebruikers</div></a>"; 
      } 

      else{ 
      echo "-"; 
      }     



      ?> 

      </div> 
      <br /> 
      <?php 

      $prob = $_GET["prob"]; 

      if ($prob == 010) 
      { 
      echo "<h3>Wat Maakt het aantal gebruikers uit?</h3> 
      <br /> 

      <h4>Het aantal gebruikers bepaalt de hoeveelheid data die er word gebruikt binnen een netwerk. Hoe meer gebruikers er op een netwerk zitten, des te meer data word er gebruikt.<br /> 
      <br />Als het netwerk dit niet aankan, betekent het dat u een onstabiel, en traag netwerk krijgt, waardoor u niet optimaal van uw internet kunt genieten.</h4>"; 
      } 

      if ($prob == 1030){ 

      echo "<h3>Wat Maakt het aantal muren of plafonds uit?</h3> 
      <br /> 

      <h4>Waneer een WiFi signaal door muren of plafonds heen reist, neemt het in sterkte af. Dus hoe meer obstakels er tussen uw router, en uw computer staan, des te zwakker het signaal.<br /> 
      <br />Door middel van de juiste onderdelen, denk bijvoorbeeld aan antenna's, kun je een sterker signaal creëren dat zich verder kan verspreiden.</h4>"; 
      } 

      if ($prob == 30){ 

      echo "<h3>Wat Maakt het aantal gebruikers uit?</h3> 
      <br /> 

      <h4>Het aantal gebruikers bepaalt de hoeveelheid data die er word gebruikt binnen een netwerk. Hoe meer gebruikers er op een netwerk zitten, des te meer data word er gebruikt.<br /> 
      <br />Als het netwerk dit niet aankan, betekent het dat u een onstabiel, en traag netwerk krijgt, waardoor u niet optimaal van uw internet kunt genieten.</h4>"; 
      } 

      else{ 
      echo "-"; 
      }     



      ?> 

很抱歉,如果我的代碼是不清楚,我需要習慣對網站整體粘貼代碼,但至少我試過了。


所以對於TL; DR我們中間的人。總之:

我需要使用url參數過濾php頁面,但它似乎無法獲取參數,因爲URL不會直接更改。

,看看我到目前爲止有:see this webpage

提前感謝!

+3

使用Firefox + Firebug。打開調試器 - 打開NET選項卡,你可以看HTTP請求/響應,看看發生了什麼。 –

+1

或Chrome調試器。 – Jivings

+1

在Javascript中使用'location.hash'怎麼樣? –

回答

2

它看起來像被附加到AJAX請求的參數不同於PHP代碼正在查找的參數。

從你的嚮導主頁,如果你點擊「我的互聯網太慢了」(第一個按鈕由谷歌翻譯翻譯)。如果你然後點擊三個按鈕中的任何一個,我會得到你描述的錯誤頁面。正在請求的網址是/detail.php?id=010,但您的PHP代碼段說明該腳本正在查找prob GET參數。

嘗試調整發送給prob的參數或PHP腳本正在查找的參數爲id

+0

謝謝,我從來沒有見過這麼愚蠢。我沒有將文件speed.php(它傳遞變量)上傳到服務器。再加上給出的其他答案,我相信我的腳本現在是穩定的!感謝所有的時間:) – Martie

3

你應該把你引用的值作爲比較對象。例如,010將被解釋爲八進制。

if ($prob == '010') { 
    ... 
} else if ($prob == '1030') { 
    ... 
} 

依此類推。

編輯另外,正如Noah所說,URL中沒有傳遞「prob」參數,只是「id」。所以你會分配$prob = $_GET['id']

+0

正如諾亞的回答評論,感謝提示和時間。我也應用了你的方法來傳遞數字,現在我確定該變量總是被處理,因爲它應該:) – Martie

2

而且已經通過Noah FreitasDan強調的要點,我建議您使用PHP switch通過所有可能的值去旅行,它的清潔和默認選項允許你如果沒有找到返回錯誤值。

另外,檢查你的變量與isset(),不要以爲他們的存在,否則:

  • 你花很長時間來調試腳本;
  • 不知道是否有任何事情正在通過;
  • 可能會得到一個PHP通知Notice: Undefined variableNotice: Undefined index;
  • 等。

PHP示例基於您的代碼

<?php 

// check if variable is present to use it or pass empty 
$prob = (isset($_GET["id"])) ? ($_GET["id"]) : (''); 

// switch by all possible values 
switch ($prob) { 

    case "010": 
    echo "bla bla bla"; 
    break; 

    case "1030": 
    echo "bla bla bla"; 
    break; 

    case "30": 
    echo "bla bla bla"; 
    break; 

    default: 
    // This case matches anything that wasn't matched by the other cases 
    // output error, or something... 
    echo "-"; 
    break; 

} 

?> 

相關的腳本,你並不需要使用這麼多雙引號:

<script type="text/javascript"> 
function loadContent(elementSelector, sourceUrl) { 
    $(elementSelector).load(sourceUrl); 
} 
</script> 
+0

我同意你的看法,即php開關看起來更整潔,但是因爲腳本的工作原理沒有,我的PHP體驗略低於關卡(我只是一個實習生:p),所以我現在堅持使用當前的代碼。但是我從你的文章中學到了東西,並且將來一定會使用這種方法!謝謝! – Martie