【问题标题】:Refresh a single part of a webpage without passing parameters在不传递参数的情况下刷新网页的单个部分
【发布时间】:2013-10-24 14:16:51
【问题描述】:

我正在用 PHP 开发一个 Web 应用程序,我想刷新我的应用程序的一个部分。我发现一些帖子解释了如何使用传递到 URL 中的一些参数来做到这一点,如下所示:

index.php:

if ((isset($_GET['page'])) && (isset($authorizedPage[$_GET['page']]))) {
    require_once ($authorizedPage[$_GET['page']]);
} else {
    require_once ('./home.php');
}

所以 URL http://example.com/index.php?page=login 将显示我的登录页面而无需重新加载我的 index.php...到目前为止一切正常。

但我的问题更多是如何在不在 URL 中传递参数的情况下具有相同的行为。这意味着如果我想显示登录页面,我将有以下 URL http://example.com/login/

你能帮帮我吗?

为了你以后的信息,我需要整合多语言网站的概念。

谢谢

【问题讨论】:

  • 使用POST 而不是GET
  • 你可以毫无问题地使用它..
  • 感谢您的回复,但我不知道如何在我的锚中使用 POST,它将调用 [XXXXXX.com/login/] 或 [XXXXXX.com/home/] 或 [XXXXXX.com/anotherPage/]
  • 无论您阅读什么,它显然都让您感到困惑。阅读有关 ajax、jQuery 等的信息。
  • 也许.. 我只是想学习 PHP :) 不幸的是我不熟悉这种语言。还是谢谢

标签: php multilingual partial-page-refresh


【解决方案1】:

我认为您想改变人们在您的网站上加载页面的方式,不是吗?这样人们就可以加载像 example.com/login/ 和 example.com/faq/ 这样的页面,而不是 example.com?page=login 和 example.com?page=faq。

您应该在服务器根目录的 .htaccess 文件中使用 mod_rewrite。有关文档,请参阅 http://httpd.apache.org/docs/current/mod/mod_rewrite.html

我用代码

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -MultiViews
    RewriteEngine On

    RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?$ index.php?0=$1&1=$2&2=$3&3=$4&4=$5&5=$6&6=$7&7=$8&8=$9 [L,QSA]

</IfModule>

在我的 .htaccess 文件中将所有请求传递给我的 index.php 文件。 url 中的每个文件夹都会是一个 GET 参数。

这是您问题的第一部分。如果您只想重新加载网页的一部分,请使用带有 AJAX 的 JQuery,就像 Marek 之前评论的那样。

【讨论】:

  • 感谢您的回复,我觉得有点复杂。但你是对的,我想改变人们加载页面的方式:D。无论如何,这是一个很好的模式吗?
  • 看我的下一个答案(评论会太长)
【解决方案2】:

我的代码中的RewriteRule 行是一个很好的模式,当有人加载我的网站时会加载 index.php 文件。所以如果有人加载http://mydomain.com/folder1/folder2/file,文件index.php?0=folder1&amp;1=folder2&amp;3=file&amp;4=&amp;5=&amp;6=&amp;7=&amp;8=&amp;9=就会被加载。然后在 PHP 中你可以打开 $_GET 参数来加载正确的页面:

<?php
    switch ($_GET['0']) {
        case 'faq':
            {code}
            break;

        case 'login':
            {code}
            break;

        default:
            {code of you home page}
            break;
    }
?>

您可以将我的 .htaccess 文件粘贴到空白记事本中,将其另存为“.htaccess”并将其存储在服务器的根目录中。应该直接工作。

【讨论】:

  • 好的,谢谢,很清楚,很有帮助。我会看看我的供应商,看看我是否可以更改 mod_rewrite。
  • 不客气。大多数托管服务提供商默认打开 mod_rewrite。 &lt;IfModule mod_rewrite.c&gt; 行检查并避免错误。如果有效,则 mod_rewrite 模块已打开,否则您应该联系您的提供商。
猜你喜欢
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2021-02-05
  • 2017-08-13
  • 2017-05-11
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多