使用JavaScript Ajax轮询小部件

时间:2010-11-20 09:35:35

标签: ajax widget polling

我有以下问题。我需要创建一个JS小部件并将其设置在一个博客上,例如来自blogger.com的任何博客。你可以选择一个javascript框,我会在这个框中发布JS。

我所拥有的并且不知道如何执行此操作的问题是,脚本应该为exmaple执行ajax轮询60秒。但是如何执行ajax调用,当主机与主机不同时,JS是包含在哪里?

例如,最简单的解释方法是:有一个搜索框,当enayone搜索anythign时,JS脚本应该从服务器中将结果流式传输60秒,这是我在脚本中设置的,并且与主机,JS是包含的,不会成为主机JS限制的问题。

或者例如聊天客户端,其中客户端托管在另一台主机上,服务器托管在另一台主机上。

有人可以告诉我一个想法,或者给我一个例子如何做到这一点?

由于 NIK


这个例子是否有可能但没有JSONP?

function asyncreq(url) {
 var xmlhttp = false;
   try {
     xmlhttp = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         xmlhttp = false;
       }  
     }
   }
 if (xmlhttp){
         try {
             xmlhttp.open("GET", url);
             xmlhttp.onreadystatechange=function() {
                document.getElementById('mydiv').innerHTML = xmlhttp.responseText;
             }

             xmlhttp.send(null);
         }
         catch (failed) {
     xmlhttp = false;
   }
 }
}

如果您以块的形式发送响应,那么一切都很好。但这是再次呼吁ajax。当我在不同的主机中使用它时,由于同源策略,我无法调用该URL。

还有其他办法吗?

我找到了一个非常有趣的例子here

看看底部,有一个求职框。如果你研究了一个litte位,那么你会看到有一个类RSL()的用法正在执行请求。这个类如何在没有ajax的情况下执行请求?我无法理解这个班的作品。有人能告诉我一个更好的例子吗?

1 个答案:

答案 0 :(得分:0)

有两个主要选项:

  1. 将iframe放在您希望窗口小部件移动的位置。其src URL将位于将接收AJAX调用的同一服务器上。

  2. 使用JSONP,它包括在页面中插入脚本标记以绕过同源策略。这要求AJAX服务器将其JSON输出包装在?(...)中,其中URL包含callback=?。然后,只要收到回复,就开始另一个请求。