当按下按钮时,我有一个页面执行以下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
}
});
答案 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的赔率。