我正在开发一个网站,其中包含“新闻”部分和“旧版新闻”部分。新闻被单独存储在外部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块似乎根本没有被处理......
答案 0 :(得分:2)
PHP 可以 在jQuery抓取内容之前运行......以下是我设置和测试的内容......
<!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
echo 'Hi';
?>
结果是#feeds
.innerHTML
是“嗨”......我希望能够在复制情况时获得更多信息/代码。查看the jQuery load API documentation可能会有所帮助。
答案 1 :(得分: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>";
?>