如何使用AJAX从.php文件加载内容?

时间:2014-04-20 09:24:19

标签: jquery ajax

我使用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文件,或者我在这里遗漏了什么?

3 个答案:

答案 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