我正在学习如何使用AJAX,并制作了4个文件:


header.php
page1.php
page2.php
footer.php


我的标题包含bodyhtmlhead之类的东西。当我的页脚</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';
}

07-24 09:51
查看更多