PHP可以检测到不完整的xmlhttprequest.send(data)命令吗?

时间:2011-12-08 20:06:27

标签: php javascript xmlhttprequest

我看到错误日志是由发布数据的截断引起的。在调试之后,我的猜测是问题是我们正在使用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

我的目标是告诉我们需要修复的客户端(其中意味着发送短字符串的客户端)和过早关闭的工作客户端(其中一个它意味着发送长字符串),我们可以将错误注销为不可避免的。

3 个答案:

答案 0 :(得分:1)

您可以查看此功能:connection_aborted。 只有在设置ignore_user_abort(true)时,此方法才有效。 即使用户点击中止按钮,脚本现在也将继续运行。 然后,您必须检查connection_aborted函数并在必要时丢弃数据。

另一种方法是在脚本末尾保存某种标志,以将数据标记为完全处理。如果未设置该标志,则可以丢弃数据。

答案 1 :(得分:0)

我不会这么认为,因为PHP是服务器端而XmlHttpRequests是客户端。

答案 2 :(得分:0)

我意识到我们只需要客户提供更多信息即可。 为此,我们在客户端添加了一个已知的终止值。如果在服务器看到最终参数时未设置该参数,则提交不完整。