繁体   English   中英

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

[英]ajax request with prototype returns 200 success with blank html page (intermittent)

当按下按钮时,我有一个页面执行以下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

    }
 });

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

根据您提供的示例,我可以用javascript看到的唯一关注的问题是$('TeamForm')。serialize(true);。 声明。 您确定TeamForm具有格式正确的数据,并且您的PHP后端正在适当地处理此数据吗?

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

例如

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

将导致隐藏空间被发送到您的浏览器。 保留纯PHP文件中的结束标记是有效的语法(建议使用):

<?php
class Foo {
}

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

对于服务器端的问题,我的赔率为99:1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM