从其他页面获取内容并使用 URL 参数

Posted

技术标签:

【中文标题】从其他页面获取内容并使用 URL 参数【英文标题】:Getting content from other pages and use URL Parameters 【发布时间】:2012-05-29 02:33:01 【问题描述】:

所以这是我在网络上的第一个真正的编码问题,因为通常我会尝试自己寻找东西,但他的时间,我真的被困住了。

看看我目前有什么: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;"            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;"    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>       

我的网址参数页面

            <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

提前致谢!

【问题讨论】:

使用 Firefox + Firebug。打开调试器 - 打开 NET 选项卡,您可以查看 HTTP 请求/响应并查看发生了什么。 在 Javascript 中使用 location.hash 怎么样? 感谢大家的快速回复!那太好了!问题似乎是我的远程服务器上仍需要更新的文件。但是感谢大家的宝贵时间! 【参考方案1】:

除了 Noah Freitas 和 Dan 已经突出显示的点之外,我建议您使用 PHP switch 遍历所有可能的值,它的简洁和默认选项允许您在以下情况下返回错误值什么都没找到。

另外,请使用isset() 检查您的变量,不要假设它们存在,否则:

调试脚本的时间过长; 不知道是否正在传递任何东西; 可能会收到php通知(Notice: Undefined variable, or Notice: 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>

【讨论】:

我同意你的观点,php 开关看起来更整洁,但由于脚本可以正常工作,而且我的 php 经验有点低于水平(我只是实习生:p)所以我现在将坚持我当前的代码。但是我确实从您的帖子中学习了,并且将来一定会使用此方法!谢谢!【参考方案2】:

您应该在要比较的值周围加上引号。例如,010 将被解释为八进制。

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

等等。

edit:另外,正如 Noah 所提到的,在 URL 中没有传递“prob”参数,只有“id”。所以你会分配$prob = $_GET['id']

【讨论】:

正如对诺亚回答的评论,感谢您的提示和时间。我还应用了您的方法来传递数字,现在我确定变量总是按应有的方式处理:)【参考方案3】:

看起来附加到 AJAX 请求的参数与 PHP 代码正在查找的参数不同。

在您的向导主页上,如果您点击“我的互联网太慢”(谷歌翻译的第一个按钮)。如果您随后点击三个按钮中的任何一个,我就会看到您描述的错误页面。请求的 url 是 /detail.php?id=010,但您的 PHP sn-p 说脚本正在寻找 prob GET 参数。

尝试将发送到prob的参数或PHP脚本正在寻找的参数调整为id

【讨论】:

谢谢,我以前怎么没看到。我还没有将文件 speed.php(它传递变量)上传到服务器。连同给出的其他答案,我确信我的脚本现在是可靠的!感谢您的所有时间:)

以上是关于从其他页面获取内容并使用 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS - 页面重定向到 Angular js 中的其他页面,同时尝试从 url 获取参数

JQuery可以获取从另一个页面传过来的值吗

Drupal:从节点而不是url获取块视图的参数?

PHP保留URL参数表单页面

ASP.net怎么获取其他页面的URL

Wordpress 联系表单:想要创建一个联系表单以允许从页面或 url 参数动态获取值的隐藏字段