Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest用于在外部调用时刷新页面_Javascript_Html_Xmlhttprequest - Fatal编程技术网

Javascript XMLHttpRequest用于在外部调用时刷新页面

Javascript XMLHttpRequest用于在外部调用时刷新页面,javascript,html,xmlhttprequest,Javascript,Html,Xmlhttprequest,假设我有page1.html,这是一个等待见我的人的队列列表 我可以访问page2.html,我用它查看列表,并给特定的人打电话。当我点击page2.html上的一个名字时,page1.html应该在这个人的名字后面附加一个类(它使用css3动画使其闪烁) 这个例子很蹩脚,但你明白我在这里要做的。。。我已经读了一些关于XMLHttpRequests和“onreadystatechange”的文章,但我不确定这是如何工作的 想法…您可以使用XMLHttpRequest从page1.html加载数据

假设我有page1.html,这是一个等待见我的人的队列列表

我可以访问page2.html,我用它查看列表,并给特定的人打电话。当我点击page2.html上的一个名字时,page1.html应该在这个人的名字后面附加一个类(它使用css3动画使其闪烁)

这个例子很蹩脚,但你明白我在这里要做的。。。我已经读了一些关于XMLHttpRequests和“onreadystatechange”的文章,但我不确定这是如何工作的


想法…

您可以使用XMLHttpRequest从page1.html加载数据,并相应地在page2.html上显示数据。您必须使用第2页上的请求并在第1页返回数据

您可以将page2视为前端或客户端,您必须在其中解释并显示信息(在您的示例中,显示列表并更改人员的类别),而page1是为page2提供信息的后端


有关XMLHttpRequests或其用于的概念的更多信息,我建议您看看这里的示例:

据我所知,当您单击第2页上的人名时,您希望更新第1页。我认为这里有一些情况:

  • 第二页是一篇文章。当您单击一个名称时,可以在第1页直接对其进行操作。这里不需要XMLHttpRequest
  • 第2页是一个弹出窗口。几乎一样。这可能会对你有所帮助
  • page2是一个独立页面,位于不同的选项卡/窗口中。这里需要一个ajax(XMLHttpRequest)。当您单击name时,这个操作应该写在某个地方(服务器端、sql或其他),page1应该在某个时间间隔检查任何更改

  • 我想你可以这样做。当你点击一个人的名字时,让你的page2.html更新一个数据库。当您在page2.html上单击此人的姓名时,可以在数据库中标记此人

    现在在另一端,让您的page1.html在JavaScript循环中在后台连续查询数据库。从数据库请求信息时,您可以相应地更新page1.html

    我希望你能得到它。如果有任何环孔,一定要告诉我


    这个链接可能会有所帮助:

    我确实收到了相当多的回复,虽然大多数回复都需要不断的javascript ping或某种迂回的方法(如反向AJAX或COMET、长轮询等),但它们都解决了问题

    尽管如此,我还是进行了一点额外的挖掘,发现了一个非常适合的技术:

    HTML5的服务器发送事件 (http://dev.w3.org/html5/eventsource/)


    这允许客户机将自己声明为来自服务器的通信的“接收者”,从而有效地逆转了web技术中占主导地位的“先请求,后服务”方法。服务器可以在没有初始请求的情况下启动与客户机的通信,允许我在客户机可用时(如数据库更改)向客户机推送更新

    嘿,是的。。。一个JS(AJAX)循环确实发生在我身上,但是你看,我不想要一个“活动解决方案”,这会不断困扰服务器。。。如果有一百万个终端用户,他们每个人都将向服务器发送呼叫,这将加载服务器。。。难道没有消极的解决办法吗?也许有些东西甚至不需要DB?@Abhishek-我用一个链接更新了我的答案,你可能会有所帮助是的,长轮询是我找到的解决方案之一。。。但我最终使用了HTML5的服务器发送事件。。。在我自己的回答中有更多信息…:-SYes,你似乎理解这个问题,但问题是,我不能设置一个循环并期望page1.html不断地ping来检查“嘿,你改变了吗?”。。。有没有替代方案?当发生更改时,允许我编写Page2.html代码以与Page1.html通信?仅使用javascript和html,您就没有该选项。检查必须由用户的浏览器启动。您可以通过经常使用setInterval()调用page1并获取数据来实现这一点。其他选项取决于您可以使用哪些其他技术。这里有一些链接给你一个想法:,我想避免时间间隔分离的请求。。。这实际上是让客户机每隔5秒(例如)与服务器通信一次,并询问“嘿,你改变了吗?”。我能不能换一种方式,在DB更新之前,通信是静默的,然后它与一个父函数联系,该函数将更新发送到各种活动会话?@Abhishek您必须使用前两个选项之一。没有刷新页面或ajax调用,这就是方法。