我看到错误日志是由发布数据的截断引起的。在调试之后,我的猜测是问题是我们正在使用xmlhttprequest来发布帖子,并且用户在发送完整的帖子数据之前关闭了浏览器。
这是我们的js代码:
httpReq = new XMLHttpRequest();
httpReq.open("POST", url,false);
httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
httpReq.send(param);
除了发现缺少帖子参数之外,有没有办法在PHP端检测不完整的发送? (由于它们是动态的,我们不能这样做。)
2011-02-27编辑:
例如,客户端发送的内容如下:
&obj1_name=Greeting&obj1_type=string&obj1_value=hello&obj1_id=34
obj1_id是必填字段,用于存储有关对象的其余详细信息。但有时我们会收到一个字符串:
&obj1_name=Greeting&obj1_type=string
我的目标是告诉我们需要修复的客户端(其中意味着发送短字符串的客户端)和过早关闭的工作客户端(其中一个它意味着发送长字符串),我们可以将错误注销为不可避免的。
答案 0 :(得分:1)
您可以查看此功能:connection_aborted
。
只有在设置ignore_user_abort(true)
时,此方法才有效。
即使用户点击中止按钮,脚本现在也将继续运行。
然后,您必须检查connection_aborted函数并在必要时丢弃数据。
另一种方法是在脚本末尾保存某种标志,以将数据标记为完全处理。如果未设置该标志,则可以丢弃数据。
答案 1 :(得分:0)
我不会这么认为,因为PHP是服务器端而XmlHttpRequests是客户端。
答案 2 :(得分:0)
我意识到我们只需要客户提供更多信息即可。 为此,我们在客户端添加了一个已知的终止值。如果在服务器看到最终参数时未设置该参数,则提交不完整。