【问题标题】:Best way to capture page URL for quiz results page为测验结果页面捕获页面 URL 的最佳方法
【发布时间】:2015-01-15 11:25:36
【问题描述】:

想象一下在 mysite/test/universe (URL = 'universe') 或 mysite/test/earth (URL = 'earth') 进行测验。选择答案并单击提交按钮后,您将被转发到位于 mysite/test/results.php 的静态页面。表单会自动转发一些测试数据(例如 $answer1 = $_POST['q1'])。

有没有办法修改脚本,当有人点击提交按钮时,页面的 URL 也会被捕获并转发到结果页面?

我不希望 URL 本身发生变化。例如,如果人们被转发到 mysite/test/results%universe 或类似的东西,那么他们只需访问该 URL 即可查看所有答案。

所以我只想转发 URL 的值,然后我可以使用它来显示正确和错误答案以及反馈的样式。

我还应该解释一下,我正在使用 PHP、jQuery 和 AJAX,我的最终目标是修改我的测试,以便用户可以登录,并将测试结果发布到数据库中。考虑到这一点,修改下面的 HTML 以便捕获页面 URL 并将其转发到结果页面的最佳方法是什么?

<div id="quiz" rel="key" style="width: 500px; margin: 10px auto;">
  <form action="grade.php" method="post" id="quiz">
    <ol>
      <li id="q1">
        <div class="Question">No one knows if there&#8217;s just one universe or a series of universes, sometimes referred to as a:</div>
        <div class="Answer">
          <label for="q1-A"><div class="Radio"><input type="radio" name="q1" id="q1-A" value="A" style="display: none;"> A. multiverse</div></label></div>
        <div class="Answer">
          <label for="q1-B"><div class="Radio"><input type="radio" name="q1" id="q1-B" value="B" style="display: none;"> B. parallel universe</div></label></div>
      </li>
    </ol>
    <input type="submit" value="Submit Quiz" />
  </form>
</div>

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    在表单中有一个隐藏字段

    &lt;input type="hidden" id="url" /&gt;

    并用这个javascript设置它的值

    document.getElementById("url").value = document.URL;

    或者这个 jQuery

    $(document).ready(function(){ $("input#url").attr("value", $(location).attr('href')); });

    然后它将与表单一起提交。

    【讨论】:

    • 谢谢;这看起来很简单,虽然我有点困惑。我应该有两个输入,一个用户单击以转发到结果页面,加上一个隐藏输入,对吗?然后我在表单结束标记之后添加新的 JavaScript。我输入了 echo $url;在结果页面上,但是当我单击提交按钮时,它不会回显值。我做错了什么,还是我只是错过了一个额外的步骤?
    • 两个输入,是的;提交按钮和新的隐藏输入。我认为 echo $url 是php,我不熟悉。包含 url 的新隐藏输入将在表单发布到的任何位置可用。想必你会用 php 来阅读这篇文章,但我对此无能为力。
    • 查看jsfiddle.net/88ghma8a 并检查开发人员工具中的提交按钮(右键单击提交按钮并在 Chrome 中选择“检查元素”)。在提交按钮的 HTML 上方,您将看到 @987654325 @. 这是包含 url 的隐藏输入。
    • @Mark Wade - 现在我明白了。你知道如何使用 JavaScript 在结果页面上显示捕获的值吗?它对我不起作用,但这可能是因为我不知道如何显示该值,而且我不确定它是否返回 /test/gw-intro-1、test/gw-intro-1 或 gw -intro-1.
    • 我很确定您不能直接从 javascript 访问发布的值。但是,它们应该可用于您的 php.ini 文件。然后,您可以使用 php 使它们可用于 javascript。我建议您真正熟悉流行浏览器 (F12) 中可用的开发人员工具栏,以便了解幕后情况。绝对是 Web 开发人员不可或缺的工具。你会想知道没有它你是如何管理的。我知道我做到了。
    【解决方案2】:

    您可以使用查询字符串。如果您在http://something.html 中的第一页 url 和表单提交后的第二页 url 是 another.html 那么

     <form action="another.html?previous=<?php echo $_SERVER['REQUEST_URI']; ?>">
     </form>
    

    在另一个.html中,你可以在提交表单之前使用GET获取上一页的url

     $_GET["previous"]
    

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多