[英]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.