2012-05-22 67 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