所以我使用 jQuery .load() 调用在 CakePHP Web 应用程序中实现无限分页。
这是Javascript代码:
$("#post_container").append('<div class="batch row" style="display:none;"></div>'); //append a container to hold ajax content
var url = $("a#next").attr("href"); //extract the URL from the "next" link
$(".paging").remove(); // remove the old pagination links because new ones will be loaded via ajax
if(url === undefined)
{
$("#ajax_pagination_text").html("<strong>Turtles all the way down. No more posts :(</strong>");
}
$("div.batch").load(url, function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
alert(msg + xhr.status + " " + xhr.statusText);
}
else {
$(this).attr("class","loaded row"); //change the class name so it will not be confused with the next batch
$(".paging").hide(); //hide the new paging links
$(this).fadeIn();
}
});
这里重要的部分是 $.load() ,它试图加载一个 url (http://www.MYWEBSITE.com/posts/index/page:2)。当 jQuery 发出请求时,服务器返回 500 内部服务器错误 如果我使用 jQuery.ajax(url); 也是一样的。如果我直接访问该网址,它会加载,没问题。
ajax 调用在我的本地开发服务器上也可以正常工作。所以这一定与我的主机 1and1 上的设置有关。这里发生了什么?我已经不得不处理这台主机的几个 500 个服务器错误。
我已按如下方式更改了我的 .htaccess 文件以修复之前的 500 个错误:
CakePHP 根目录中的 .htaccess:
<IfModule mod_rewrite.c>
AddType x-mapp-php5 .php
SetEnv PHP_VER
RewriteEngine ON
RewriteBase /
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
CakePHP 应用程序/中的 .htaccess:
<IfModule mod_rewrite.c>
AddType x-mapp-php5 .php
RewriteEngine ON
RewriteBase /
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
CakePHP 应用程序/webroot/ 中的 .htaccess:
<IfModule mod_rewrite.c>
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
RewriteEngine ON
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?q=$1 [QSA,L]
</IfModule>
非常感谢任何帮助或见解!