hijax不使用php扩展

时间:2012-11-14 12:14:51

标签: php jquery ajax

由于某些原因,当文件具有php扩展名时,以下代码不起作用:

<ul class="issues">
<li><a href="jobs.php">Jobs</a></li>
<li><a href="town-centres.php">Town Centre</a></li>
</ul>
<div id="input"></div>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
(function(){
var wrap = $('#input');
$('ul.issues a').on('click', function(e){
    var href = $(this).attr('href');
    wrap.load(href + ' article');   
    e.preventDefault();
});
})();
 </script>

在本地工作正常但远程服务器上没有任何内容,除非我将文件扩展名更改为htm。控制台显示已加载XHR。请参阅broken PHP versionworking .htm version

1 个答案:

答案 0 :(得分:0)

问题是PHP脚本(或者在这种情况下不是)返回...

wrap.load(href + ' article');

此jQuery加载href并获取<article>部分并将其加载到wrap元素中。如果您使用类似Firebug(或任何浏览器调试器,您可以在其中查看使用AJAX加载的内容),您将看到PHP脚本返回以下内容:

<div id="content">
<h1>Do new supermarkets really create jobs?</h1>
etc...

.htm版本返回的位置:

<div id="content">
<article>
<h1>Do new supermarkets really create jobs?</h1>
etc ...

所以你可以看到PHP没有回复<content>标签 - 因此没有HTML添加到wrap元素

您有2个选项可以解决问题..

  1. 将jQuery更改为wrap.load(href + ' #content');
  2. 将PHP脚本更改为包含<article>