Php 使用pushState()的AJAX
我找到了一篇精彩的文章,这篇文章解释了如何在AJAX中使用pushState。 但我不知道“content.php”文件是如何组织的。在评论中,这个问题经常被问到,但没有人回答。这一点非常重要,因为没有“content.php”,任何东西都无法工作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文件的
也许有人知道“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');
}