我遇到了一个我无法解释的情况,并且我认为这可能是我误解浏览器如何处理我的AJAX请求的方式。
作为参考,您可以假设我在Apache服务器上运行Codeigniter并使用jQuery触发我的AJAX请求。有问题的浏览器是Chrome。
我的应用程序中有一个页面,用于显示几个不同的图形。当您导航到此页面时,有关要在页面上显示的图形的特定信息将作为URL中的GET
参数传递给服务器。这些参数用于为某些数据启动弹性搜索查询,然后对其进行操作并将其传递回客户端以呈现某些图形。这种方法在渲染单个页面时工作正常。
但是,如果打开少量标签页。假设您打开五个或六个应该都呈现不同图形的选项卡,有时候(它可能有点不可预测)。一些选项卡将呈现相同的数据。我想知道是否由于某种原因打开多个标签。 Chrome正在多个标签中接收AJAX响应。它只是看到一个响应返回,将它发送到每个选项卡,无论它是否是正确的响应,这导致图形在多个选项卡中显示相同。
我遇到的主要问题是chrome(或任何其他浏览器)如何处理跨多个标签的连接。显然,它将它视为单一连接,因为我们能够持久化会话。此外,如何识别AJAX请求,它是否有助于传递唯一标识符并尝试听取它?但这似乎不起作用,因为它看起来好像(如果我是对的)浏览器只是选择返回的第一个响应并接受它。当打开多个标签并等待响应时,它是否感到困惑并认识到已建立连接?
如此多的问题,但如果有人能提供任何见解或帮助解决这个问题,将非常感激。
编辑:要明确我最感兴趣的是如何防止此行为并正确接收特定于请求来自的标签的数据。
答案 0 :(得分:0)
在我的一些应用程序中,我们遇到了类似的问题。我们所做的工作是创建新窗口而不是制表符,以便每个浏览器都站在自己的会话中。这样AJAX就不会感到困惑。我们设法修复其他需要基于标签的设计的应用的唯一方法是为每个标签创建唯一的会话ID。这样AJAX可以指向特定的会话ID。通过标签方式需要html5的会话存储才能工作。