如何使用AJAX从.php文件加载内容?
我使用AJAX和History.js将单独页面中的内容加载到索引页面。 但由于某种原因,我只能加载.html页面 – 我如何使这个function加载.php页面?
解决方案是在var = urlPath中添加扩展吗? 其他想法?
// AJAX LOAD ONKLIK $('body').on('click', 'a', function(e) { var urlPath = $(this).attr('href'); var title = $(this).text(); History.pushState({urlPath: urlPath}, title, urlPath); $("#content").load(urlPath); return false; });
编辑:
我使用没有扩展名的链接,例如加载页面’about.html’:
About
在本地测试时在浏览器中生成此URL:
http://localhosthttps://stackoverflow.com/about
多数民众赞成,但当我尝试以相同的方式加载.php-page fx’home.php’时没有任何反应 – 没有任何东西被加载。 看起来像AJAX / History.js以某种方式打破。
但是 – 如果我在页面’home.php’的链接中添加扩展名.php,则页面通过AJAX加载,就像.html-pages:
About
但是,此链接将在本地测试的浏览器中添加扩展名.php:
http://localhosthttps://stackoverflow.com/home.php
那么有人知道History.js在使用AJAX时是否只接受.html文件,或者我在这里遗漏了什么?
您的函数从标记a中的attibute href自动加载URL
您必须将此行修改为php文件
var urlPath = $(this).attr('href');
用这个
$('body').on('click', 'a', function(e) { var urlPath = $(this).attr('href'); var title = $(this).text(); History.pushState({urlPath: urlPath}, title, urlPath); //$("#content").load(urlPath); $.ajax({ url: urlPath, dataType: 'html', success : function(response){ $("#content").html(response); } }); return false; });
最后编辑/答案:
我找到了一个问题的答案 – 实际上这个问题与AJAX / History.js无关,但与我的本地测试服务器有关。
为了重写URL,所以链接将无法使用扩展,在.htaccess中添加以下规则将它放在服务器的根目录中 – 现在.html和.php – 如果链接看起来像About
将加载页面About
选项+ FollowSymlinks
RewriteEngine On
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME} .html -f
RewriteRule ^(。*)$ $ 1.html
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME} .php -f
RewriteRule ^(。*)$ $ 1.php