1

我有一个正在开发的网站,其中包含“新闻”部分和“旧新闻”部分。新闻单独存储在外部PHP文件中,这些文件由服务器通过 PHP 加载(服务器计算 PHP 文件的数量并显示最后一个 - 当前新闻 - 在“新闻”部分中,所有其他文件在“旧新闻”栏目:

<!-- ####### NEWS ####### -->

<div id="news">
    <h2>NEWS</h2>

    <div>
        <a id="showoldnews" href="#news">OLDER</a>
    </div>

    <?php $directory = "assets/news/"; if (glob($directory . "*.php") != false) { $newscount = count(glob($directory . "*.php")); } else {} ?>

    <?php include('assets/news/news' . $newscount . '.php'); ?>

    <!-- ####### OLDER NEWS ####### -->

    <div id="oldnews">
        <h2>OLDER NEWS</h2>

        <?php
            $newscount = $newscount-1;
            while ($newscount>0) {
                include('assets/news/news' . $newscount .'.php');
                --$newscount;
            }
        ?>
    </div>

“旧新闻”部分最初是隐藏的,仅由 jQuery 触发器可见:

// Show old NEWS
$('a#showoldnews').click(function () {
    $('#oldnews').show(400);
});

但我预计长期存在问题:由于首先加载所有新闻,这意味着随着越来越多的新闻出现,网站的加载速度将变慢。即使它是“可接受的”,它仍然不是理想的解决方案。

我正在考虑使用jQuery.load()加载外部 PHP 文件,然后仅在用户要求时加载旧新闻。

问题是我不知道是否可以jQuery.load()在用户单击链接后使用加载以下脚本:

<?php
    $directory = "assets/news/";
    if (glob($directory . "*.php") != false) {
        $newscount = count(glob($directory . "*.php"));
    }
    else {
    }
?>
<?php
    include('assets/news/news' . $newscount . '.php');
?>

这种方法可以接受吗?我试过了,但它根本不起作用(我可以使用该load()函数加载静态内容,但我无法让服务器处理PHP脚本。我不知道是否可以让服务器处理PHP 代码,因为 PHP 处理是在网站开始加载之前在服务器端完成的……事实并非如此。

更新#1

我有以下从服务器加载“load.php”文件的内容:

<script type="text/javascript">
    $('#oldnews').load('load.php');
</script>

load.php 文件的内容是:

<div class="section" id="oldnews">
    <h2>OLDER NEWS</h2>

    <div class="topLink">
        <a href="#">TOP</a>
    </div>

    <div class="topLink2">
        <a id="hideoldnews" href="#news">HIDE</a>
    </div>

    <?php
        $newscount = $newscount-1;
        while ($newscount>0) {
            include('assets/news/news' . $newscount .'.php');
            --$newscount;
        }
    ?>
</div>

“TOP”和“HIDE”链接出现没有任何问题。但是,PHP 块似乎根本没有被处理......

4

2 回答 2

2

PHP可以在 jQuery 抓取内容之前运行...这是我设置和测试的内容...

测试.html

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/JavaScript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>

    <body>
        <div id="feeds"><b>45</b> feeds found.</div>
        <script type="text/JavaScript">
            $("#feeds").load("go.php");
        </script>
    </body>
</html>

去.php

<?php
    echo 'Hi';
?>

结果是#feeds .innerHTML“嗨”......我希望在复制情况时获得更多信息/代码。查看jQuery 加载 API 文档可能会有所帮助。

于 2013-04-02T16:37:42.680 回答
0

正如@joseph 所说的正确并帮助了我,但在我的情况下,我想隐藏外部 Php 文件的内容,
下面是对我有帮助的代码更改!

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/JavaScript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>

    <body>
    <b>Db file result</b>
        <div id="feeds" hidden=""></div>
        <script type="text/JavaScript">
            $("#feeds").load("db.php");
        </script>
    </body>
</html>

我的 PHP 文件有数据库连接,所以我不得不隐藏它, db.php

<?php

session_start();

$db = pg_connect("host=ec2-xxx-x0-xxx-xx.compute-1.amazonaws.com port=5432 dbname=dxxxxxxxxx user=vxxxxxxxxxx password=1xxxxxxxxxxxxxxxxxxxxxxxxxxxxd");
 pg_select($db, 'post_log', $_POST);


 $query=pg_query("(SELECT id,name, FROM organization WHERE is_active = 'true' AND account_token = '".$_SESSION['account_token']."');


 $json=array();
while ($student = pg_fetch_array($query)) {
    $json[$student["is_user"]."-".$student["id"]] = $student["name"]."-".$student['pan'];
}

$textval = json_encode($json);
$foo = "var peoplenames=" . $textval;

file_put_contents('autocomplete-Files/'.$_SESSION['account_token'].'.js', $foo);

echo "<script>location='filename.php'</script>";


?>
于 2017-06-30T10:58:47.687 回答