我使用AJAX和History.js将单独页面中的内容加载到索引页面。但由于某种原因,我只能加载.html页面 - 如何使这个函数加载.php-pages?
解决方案是在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':
<a href="/about">About</a>
在本地测试时在浏览器中生成此URL:
http://localhost/about
多数好吧,但是当我尝试加载.php-page fx&#39; home.php&#39;同样的方式 - 没有任何东西被加载。似乎AJAX / History.js会以某种方式破坏。
但是 - 如果我在页面&#39; home.php&#39;的链接中添加扩展名.php,则页面通过AJAX加载,就像.html-pages:
<a href="/home.php">About</a>
但是此链接会在本地测试的浏览器中添加扩展名.php:
http://localhost/home.php
所以有人知道History.js在使用AJAX时是否只接受.html文件,或者我在这里遗漏了什么?
答案 0 :(得分:0)
您的函数会自动从标记a
中的属性href加载网址您必须将此行修改为php文件
var urlPath = $(this).attr('href');
答案 1 :(得分:0)
使用此
$('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;
});
答案 2 :(得分:0)
最后编辑/答案:
我找到了一个问题的答案 - 实际上这个问题与AJAX / History.js无关,但与我的本地测试服务器有关。
为了重写网址,以便链接无法使用扩展,请在.htaccess中添加以下规则,将其放在服务器的根目录中 - 现在.html和.php - 如果链接看起来像这样,页面将加载{ {1}}
选项+ 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