ajax请求与原型返回200成功与空白的html页面(间歇)

时间:2009-07-21 08:34:36

标签: php javascript ajax json prototypejs

当按下按钮时,我有一个页面执行以下ajax请求。

通常我得到一个json对象,它工作正常,我注意到间歇性请求(通常只是该页面的第一个请求),我得到一个200页成功代码和空白页。

如果我重新加载html页面,然后再次按下按钮,它会在之后正常工作。

断断续续的意思是我不能随意复制这个问题,但它经常发生,我需要对此做些什么

我只是想知道它是否很可能是ajax或特别是原型问题或服务器端问题(我正在使用debian / apahce / php)

我可以尝试追踪问题?

new Ajax.Request( url, 
{
    method:'post',
    parameters: $('TeamForm').serialize(true),
    onSuccess: function(transport) {
        // do stuff                     

    },
    onFailure: function(transport) { 
        // display error

    }
 });

2 个答案:

答案 0 :(得分:1)

这不是解决您的问题的方法,而是解决方法 - 与此同时,您可以检测响应的responseJSON属性是否为NULL,如果是,请记录错误并重新提交请求。这样至少第二个请求应该通过。处理此问题的最简单方法可能是从onSuccess处理程序中抛出一个自定义对象,允许您的onFailure处理程序捕获它并重新提交。

答案 1 :(得分:0)

根据您提供的示例,我可以通过javascript看到的唯一关注点是$('TeamForm')。serialize(true);声明。你确定TeamForm有很好的数据,你的PHP后端是否适当地处理了这个?

检查您的PHP代码是否有任何尾随空格。您不应该使用结束标记结束PHP文件。

e.g。

<?php
class Foo {
}
?> //There is a space after this closing tag!

会导致隐藏空间被发送到您的浏览器。将结束标记保留在纯PHP文件之外是有效的语法(并推荐):

<?php
class Foo {
}

还要检查代码中是否有可能将输出发送到浏览器的回显或打印。还要检查display_errors设置,因为错误消息也可能导致数据被发送到浏览器。

我对服务器端的问题提出了99:1的赔率。