Javascript jQuery-Ajax在某些帖子上返回错误500

Javascript jQuery-Ajax在某些帖子上返回错误500,javascript,jquery,ajax,cakephp,post,Javascript,Jquery,Ajax,Cakephp,Post,我有一些Ajax已经在一个实时站点上运行,现在它已经停止工作了。Ajax应该返回一个页面,但返回的是一个 奇怪的是,我可以导航并发布到Ajax调用的页面,因此页面只能通过Ajax调用($.post)工作 另一件奇怪的事情是,它在当地工作得很好,但不是在生活中。此外,该站点上的所有其他Ajax都在工作 有人知道这可能是什么吗?顺便说一下,这都是用CakePHP实现的jQuery 编辑: apache错误日志显示: “过早结束脚本头:php脚本,引用…” 编辑2: 这一切都发生在我将服务器切换到SS

我有一些Ajax已经在一个实时站点上运行,现在它已经停止工作了。Ajax应该返回一个页面,但返回的是一个

奇怪的是,我可以导航并发布到Ajax调用的页面,因此页面只能通过Ajax调用($.post)工作

另一件奇怪的事情是,它在当地工作得很好,但不是在生活中。此外,该站点上的所有其他Ajax都在工作

有人知道这可能是什么吗?顺便说一下,这都是用CakePHP实现的jQuery

编辑

apache错误日志显示: “过早结束脚本头:php脚本,引用…”

编辑2


这一切都发生在我将服务器切换到SSL时。上面写着错误,然后是“端口80”。

检查apache和php
错误日志
!它会在那里


此问题最常见的原因是脚本在向服务器发送完整的头集(可能是任何头集)之前死亡。若要查看是否存在这种情况,请尝试从交互式会话独立运行脚本,而不是作为服务器下的脚本运行。如果您收到错误消息,这几乎肯定是“脚本头过早结束”消息的原因。即使CGI在命令行中运行良好,请记住,在web服务器下运行时,环境和权限可能不同。CGI只能访问Apache配置中指定的用户和组所允许的资源。此外,环境将与命令行上提供的环境不同,但可以使用mod_env提供的指令进行调整

第二个最常见的原因(除了人们根本不输出所需的头之外)是与Perl的输出缓冲交互的结果。要使Perl在每个输出语句后刷新其缓冲区,请在发送HTTP头的print或write语句周围插入以下语句:

{
    local ($oldbar) = $|;
    $cfh = select (STDOUT);
    $| = 1;
    #
    # print your HTTP headers here
    #
    $| = $oldbar;
    select ($cfh);
}
通常,只有在从脚本调用外部程序并将输出发送到stdout时,或者在发送头和实际内容开始发送之间存在长时间延迟时,才需要这样做。为了最大限度地提高性能,您应该在发送头的语句之后关闭缓冲区刷新(使用$|=0或等效值),如上所示

如果您的脚本不是用Perl编写的,请对您正在使用的任何语言执行相同的操作(例如,对于C,在编写标题后调用fflush()

“脚本头过早结束”消息的另一个原因是RLimitCPU和RLimitMEM指令。如果CGI脚本由于资源限制而被终止,您可能会收到消息

此外,suEXEC、mod_perl或其他第三方模块中的配置问题通常会干扰CGI的执行,并导致“脚本头过早结束”消息


CPHP:


您可以使用检查服务器在该$.post期间返回的内容。如果您直接在浏览器中运行相同的方法,它将包含返回的网页。

此错误有点问题,因为它可能是由许多因素引起的

你的网页在做什么。。。?这里有一些建议

如果你的页面像一个自动完成的页面,那么你会传递一些信息,然后得到一个过滤后的结果列表。。。也许您的AJAX脚本没有传回数据项,而您的页面正试图返回所有内容。非常庞大的PHP脚本(即密集/递归操作)可能会导致此错误

处理这一特定错误的一般建议是剥离到一个稳定的页面,然后开始重新添加内容-因此,也许可以将AJAX脚本指向具有以下内容的页面

<?php
    echo 'If this appears, we\'re stable!';
?>

然后逐渐添加代码块,直到遇到问题。我建议这个页面的第2版是

<?php
    print_r($_POST);
?>

因为这将允许您检查表单帖子中返回的内容

如果以上所有内容都失败,请提供以下内容

1) PHP页面功能的描述,或者代码示例。
2) 调用PHP页面的JavaScript代码。

可能生产站点违反了


浏览器中直到第三个斜杠的URL必须与AJAX帖子中的URL完全匹配,否则浏览器的Javascript安全约束将拒绝响应。服务器可能实际看到请求并正确响应,但浏览器会将空字符串返回给AJAX调用。

首先,这与jQuery、AJAX、POST、CakePHP或HTTP头无关。完整的错误消息是“脚本过早结束”,这意味着Apache用于运行PHP脚本的PHP进程意外终止(即,在PHP进程完成其部分Fast CGI协议之前)。这通常意味着PHP进程崩溃或导致“分段错误”

PHP分段故障可能很难排除,而且永远不会发生;PHP永远不会崩溃。它崩溃的原因可能是多方面的。不过,也许这是一个简单的解决办法

我要做的第一件事是完全卸载PHP并安装最新的稳定版本。如果您运行的是PHP5.3和Windows,那么您应该只使用VC6二进制文件(“VC6x86ThreadSafe”包);VC9包在Apache使用时会导致PHP崩溃。重新安装可能会解决您的问题,因为旧版本PHP的扩展DLL/SOs可能仍然存在于live server上的扩展目录中

如果在Windows上使用MySQL,我要做的下一件事就是确保MySQL
bin
目录位于live server的目录中。这样做的原因是为了确保操作系统可以“找到”libmySQL.dll。您应该能够SSH