Ajax和jQuery的500内部错误.Load()函数,直接访问url直接工作正常。 1and1服务器
因此,我正在使用jQuery .load()调用在CakePHP Web应用程序中实现无穷无尽的分页。Ajax和jQuery的500内部错误.Load()函数,直接访问url直接工作正常。 1and1服务器
下面是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调用也可以在我的本地开发服务器上正常工作。所以这一定是我的主机1和1上的设置。这里发生了什么?我已经不得不用这台主机处理几个500服务器错误。
我已经改变了我的.htaccess文件如下修正以前的500错误:
的.htaccess CakePHP中根:
<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>
的.htaccess CakePHP中的应用程序/:
<IfModule mod_rewrite.c>
AddType x-mapp-php5 .php
RewriteEngine ON
RewriteBase/
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
CakePHP中的.htaccess app/webroot /:
<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>
任何帮助或见解都非常感谢!
所以事实证明,这是一个问题,我改变了由Cake渲染哪个视图的方式,这取决于调用是否是AJAX。
本来我有这个,改变所呈现的观点:我的哪个地方发展服务器上的完美无缺
if ($this->RequestHandler->isAjax()) {
$this->render('/posts/ajax_paging'); // Special view for ajax pagination
}
。但一旦上传,这是有问题。服务器说它找不到视图。
将其更改为下面的固定问题:
if ($this->RequestHandler->isAjax()) {
$this->render('ajax_paging'); // Render a special view for ajax pagination
}
我猜它有一个事实,即实际文件夹“的帖子”有国会大厦P和我的Windows服务器不区分大小写做所以“/ posts”解析为“/ Posts”,但是一旦我将它放在1and1的linux服务器上,情况就成了问题。在阅读CakePHP文档后,我意识到我甚至不需要该目录,因为视图来自同一个控制器。因此产生的代码。
试着用$ post来代替吗? 当我的参数大于1时,我使用$ .post或get,$ .ajax作为一个参数。
感谢您的想法,区别在于一个是AJAX请求,另一个是香草GET。这让我看到了我的控制器代码,我记得我有一个检查,当请求是AJAX时,会更改使用哪个Layout来呈现请求。对此进行评论会修复Ajax请求,并且它可以正常工作。虽然没有正确,因为我有一个不同的布局的理由。在我多玩这个之后更新我的问题。 – Dsyko 2012-04-25 14:58:24
就HTTP协议而言,AJAX请求和“vanilla”请求之间没有区别。差异在于浏览器如何处理信息。考虑到这一点,您应该能够查看请求中的差异并确定问题,或者至少调整必要的设置以使AJAX请求模仿您的vanilla get,这样您就不会触发发生的任何服务器错误。 – 2012-04-25 15:35:07