1

如何根据页面的 url 动态加载内容。

例如:profiles.html#example-contenet1、profiles.html#example-contenet2

对于每个 #example-contenet 加载不同的页面内容。

我试图把它放到 JSFiddle 中,但是我认为它可能需要一个 php 后端。 http://jsfiddle.net/JEUSz/3/

也许是这样的:

switch ($_POST['name']) {
case 'example-name1':
    echo "<img src='img/pic.jpg' />"; 
    echo "<img src='img/pic.jpg' />";
    echo "hi";
    break;
case 1:
    echo "i equals 1";
    break;
case 2:
    echo "i equals 2";
    break;
default:
    echo 'fail';
    break;
}
4

6 回答 6

2

这就是服务器端开发的全部目的。阅读路由,并选择一个像这样的 PHP 路由器

于 2013-02-25T13:37:41.233 回答
0

我就是这样做的。在 php 文件中,我更改了 $template.

//Get content
$template = file_get_contents("main.html");

//Content based on _GET['page'] value
switch($_GET['page']){
    case "home": //Form Page
        include("inc/form_year.php");
        break;
    case "company_register": //Form Page
        include("inc/company_register.php");
        break;
    case "confirm_user": 
        include("inc/confirm_user.php");
        break;
    case "posts": 
        include("inc/posts.php");
        break;
    case "question": 
        include("inc/question.php");
        break;
    case "post_question": 
        include("inc/post_question.php");
        break;
    case "post_answer": 
        include("inc/post_answer.php");
        break;
    case "comment": 
        include("inc/comment.php");
        break;
    case "create_post": 
        include("inc/create_post.php");
        break;
    default: //Any page that is not defined in this switch will lead to this page
        include("inc/form_year.php");
}
于 2013-02-25T13:44:00.323 回答
0

不,您不必使用 PHP。您只需要创建多个 HTML 文件并将它们放到服务器上。然后您可以使用 AJAX 加载特定内容(与哈希“#some-name”相关)。

尝试这个:

http://tutorialzine.com/2009/09/simple-ajax-website-jquery/

于 2013-02-25T13:37:53.697 回答
0

使用 PHP,您可以使用查询字符串中的变量来确定正文的内容。这是一个非常简单的小型网站示例:

example.php?content=contact_form

<?php
$content = isset($_GET['content']) ? trim($_GET['content']) : 'default';

switch($content){
    case 'contact_form':
        include('html/contact_form.php');
        break;
    case 'welcome':
        include('html/welcome.php');
        break;
    default:
        include('html/default.php');
}

或者:

<?php
$contentPages = array(
    'contact_form' => 'contact_form.php',
    'welcome' => 'welcome.php',
    'about' => 'about.php'
);

$content = 'default.php';
if(isset($_GET['content']) && array_key_exists($_GET['content'], $contentPages)){
    $content = $contentPages[$_GET['content']];
}

include('html/' . $content);
于 2013-02-25T13:38:26.080 回答
0

您的示例代码非常好,但您必须使用变量而不是哈希标记。

所以不是profiles.html#example-contenet1,而是profiles.html?name=example-content1

然后您的 switch 语句将正常工作。

关于 $_GET 变量的一些附加信息:http: //www.w3schools.com/php/php_get.asp

服务器不会获取 URL 的哈希标记部分,有关更多信息,您可以查看此问题:

我可以在我的服务器端应用程序(PHP、Ruby、Python 等)上读取 URL 的哈希部分吗?

于 2013-02-25T13:38:47.700 回答
0

为每个页面使用一个 js 文件。

index.html => index.js
guestbook.html => guestbook.js

等等。没关系,因为您在不同的页面中需要不同的实现。如果您想在页面上共享功能,请使用 aglobal.js并将此文件包含在每个页面中。

于 2013-02-25T13:38:57.877 回答