代码之家  ›  专栏  ›  技术社区  ›  Yevgeny Simkin

有人注意到WebKit中有一个奇怪的Ajax错误,它忽略了readystate 3吗?

  •  0
  • Yevgeny Simkin  · 技术社区  · 15 年前

    我在webkit(android)中看到了一个奇怪的行为,我的服务器进程正在向它发送一个响应,它需要立即处理(而不是等待readystate 4)。在firefox和safari中,这是预期的工作方式,但是在webkit上,它不仅不响应readystate,而且似乎触发了对服务器的重复请求!

    这似乎只在服务器对请求作出响应需要一点时间时发生。我仍在四处寻找,看看到底是什么情况导致了这一点,但我好奇这是否是一个已知的bug,如果有的话,是什么解决方法。

    [编辑]这越来越奇怪了。只要服务器在10秒内响应,一切都会好起来。但如果时间比这长,那么请求将被重新提交。但是,浏览器似乎没有意识到这种重新提交,或者如果是,它没有以任何方式报告它。我给请求附加了一个唯一的ID,当它在服务器上第二次到达时,该ID是相同的。但它肯定会引发对服务器的额外调用。我对如何进一步调试这个有点茫然。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Yevgeny Simkin    15 年前

    没有人插嘴,所以。我通过终止服务器端的连接解决了这个问题。

    所以,我的解决方案是:

    a)客户端调用服务器(即perl.cgi)

    b)服务器代码:

    打印(一些用于Broswer的JSON); 关闭(stdout);35;这将向浏览器发送readystate 4并关闭连接。 &需要使用hile()的方法(amp;M);

    这并不能解释为什么浏览器行为不正常,但它确实解决了这个特定的错误。