我有以下 Ajax 调用:
function loadFPFeed(catid)
{
var dataStream = 'catid=' + Number(catid);
var failMsg = 'Sorry, but there was a problem retrieving the news feed. Please try again later.';
$.ajax({
type: 'POST',
url: "ajax/load-sp-feed.php",
data: dataStream,
cache: false
}).done(function( res ) {
if(res != false)
{
$('#ppContent').html(res);
$('#ppContentCover').fadeOut(200, function() { $(this).remove(); });
}
else
{
$('#ppContentCover').html('<div id="failMsg">' + failMsg + '</div>');
}
}).fail(function( res ) {
$('#ppContentCover').html('<div id="failMsg">' + failMsg + '</div>');
});
}
这会调用一个 PHP 文件,该文件用于在页面中提取新闻源:
<?php
$catid = intval($_POST['catid']);
require_once '../classes/Element.php';
$obj = new Element();
$obj->spNewsFeed($catid);
?>
我想做的是将我所有的 Ajax 调用放入它们自己的文件夹中。但是,当我这样做时,相对 URL 总是会中断。问题似乎是 PHP 类 ('Element.php') 的相对路径在 Ajax 文件或进行 Ajax 调用的页面中总是无效的,因为这两个文件位于不同的目录中。
我现在通过简单地将 Ajax 调用放置在与发出调用的页面相同的目录中解决了这个问题,但我不喜欢这样,因为它杂乱无章。我可以简单地将所有 require 类调用更改为绝对 URL,但是在上传到生产服务器时我必须将它们全部更改。
有什么想法或最佳实践吗?还是我应该简单地将 Ajax 文件与页面文件放在同一个文件夹中?