Php 使用pushState()的AJAX

Php 使用pushState()的AJAX,php,jquery,ajax,html,pushstate,Php,Jquery,Ajax,Html,Pushstate,我找到了一篇精彩的文章,这篇文章解释了如何在AJAX中使用pushState。 但我不知道“content.php”文件是如何组织的。在评论中,这个问题经常被问到,但没有人回答。这一点非常重要,因为没有“content.php”,任何东西都无法工作 也许有人知道“content.php”的例子?我会很感激的。谢谢您提供的链接中的代码正在向名为content.PHP的PHP文件发出一个简单的get请求。然后,PHP文件返回一个JSON作为响应 我接下来要写的是如何设置content.php文件的

我找到了一篇精彩的文章,这篇文章解释了如何在AJAX中使用pushState。

但我不知道“content.php”文件是如何组织的。在评论中,这个问题经常被问到,但没有人回答。这一点非常重要,因为没有“content.php”,任何东西都无法工作


也许有人知道“content.php”的例子?我会很感激的。谢谢

您提供的链接中的代码正在向名为
content.PHP的PHP文件发出一个简单的get请求。然后,PHP文件返回一个JSON作为响应

我接下来要写的是如何设置
content.php
文件的简单示例,不推荐这样做,但作为示例,您可以这样做

<? php

$contentId = $_GET['contnentid'];
doSomethingWith($contentid) 

public function doSomethingWith($contentId)
{
    //get content with id from db or somewhere
    return json_encode(['Content' => 'Some content']);
}

content.php
window.history.pushState()
不相关,并且始终是特定于上下文的

详细回答:

检查

在本例中,当您单击“西雅图”时,
content.php
返回:

{“title”:“西雅图-ProSEO演示的一部分”,“h1”:“西雅图”,“article#article Text”:“西雅图是毗邻美国最北部的主要城市,也是太平洋西北部和华盛顿州最大的城市。它是一个主要海港,位于普吉特海峡(太平洋的一个海湾)之间的狭窄地峡上华盛顿湖位于加拿大和美国边界以南约114英里(183公里)处,以西雅图酋长的名字命名\"西雅图是西雅图塔科马·贝勒维大都会统计区的中心,是美国第15大大都会区,也是美国西北部最大的大都会区。

西雅图是国王县的县城,也是美国主要的经济、文化和教育中心该地区。2010年人口普查发现,西雅图是一个拥有340万居民的大都市区内608660名居民的家园。西雅图港也是西雅图塔科马国际机场的运营商,是与亚洲贸易和阿拉斯加邮轮往来的主要门户,是美国第八大集装箱港口速度。

“,”图像“:”}

JavaScript随后使用该信息填充相关的Div。命名没有一般规则(可以是
content.php
content.aspx
或什么都没有)

特别是中的代码是:


这可以通过检查代码源代码来实现,但是如果您在自己的网站上使用他们的代码,您可能会发现自己受到法律约束。

content.php
window.history.pushState()
无关,并且只与特定示例相关。您不需要它。您可能想查看此信息
$(function() {
            $('nav a').click(function(e) {
                $("#loading").show();
                href = $(this).attr("href");

                loadContent(href);

                // HISTORY.PUSHSTATE
                history.pushState('', 'New URL: '+href, href);
                e.preventDefault();


            });

            // THIS EVENT MAKES SURE THAT THE BACK/FORWARD BUTTONS WORK AS WELL
            window.onpopstate = function(event) {
                $("#loading").show();
                console.log("pathname: "+location.pathname);
                loadContent(location.pathname);
            };

        });

        function loadContent(url){
            // USES JQUERY TO LOAD THE CONTENT
            $.getJSON("content.php", {cid: url, format: 'json'}, function(json) {
                    // THIS LOOP PUTS ALL THE CONTENT INTO THE RIGHT PLACES
                    $.each(json, function(key, value){
                        $(key).html(value);
                    });
                    $("#loading").hide();
                });

            // THESE TWO LINES JUST MAKE SURE THAT THE NAV BAR REFLECTS THE CURRENT URL
            $('li').removeClass('current');
            $('a[href="'+url+'"]').parent().addClass('current');

        }