我正在学习如何使用AJAX,并制作了4个文件:
header.php
page1.php
page2.php
footer.php
我的标题包含body
,html
,head
之类的东西。当我的页脚</body>
...
我需要制作一个通过AJAX调用page1.php的导航栏,但是如果用户直接访问page1.php,页眉和页脚;-;会怎样?
我试图在PHP中做两件事:
header.php:
<? $a = 1 ?>
page1.php:
<? if ($a != 1){include 'includes/header.php';} ?>
但是即使血腥$ a等于1,page1仍继续调用标头!
我也在page1.php中做到了这一点:
<? echo $a ?>
你猜怎么着?是的...它返回1 ...
header.php中的AJAX代码:
$(function() {
$('nav a').click(function(e) {
e.preventDefault();
var href = $(this).attr('href');
$('#content').html('Downloading...');
$.ajax({
url: href,
type: 'GET',
error: function(){
// always good to have an error handler with AJAX
},
success: function(data){
$('#content').html(data);
}
});
// HISTORY.PUSHSTATE
history.pushState('', 'New URL: '+href, href);
// e.preventDefault();
});
小心!
最佳答案
如果page1.php加载了AJAX,则它无法评估header.php中声明的$ a变量,因为page1.php中的所有PHP代码都是在服务器端执行的,然后将响应返回到标题页。但是,您可以将变量作为参数与url中的请求一起传递
var href = $(this).attr('href')+'?a='+'<?php echo $a; ?>';
这将通过URL传递一个值为$ a的参数,如下所示:
//page1.php?a=1
然后,在您的page1.php中,您可以检查是否未传递此变量(这意味着header.php没有请求该页面):
if (!isset($_GET['a'])){
include 'includes/header.php';
}