2012-01-02 139 views
0

我需要你的幫助,做ajax部分來刷新點擊「刷新」按鈕上的div。我需要一個例子。如何刷新按鈕上的點擊

我試圖按照我在互聯網上找到的例子刷新evey 15秒。

,但它沒有工作,可以請你幫

下面是我的代碼:

<script type="text/javascript"> 
function Ajax(){ 
    var xmlHttp; 
    try{  
     xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari 
    } 
    catch (e){ 
     try{ 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer 
     } 
     catch (e){ 
      try{ 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e){ 
       alert("No AJAX!?"); 
       return false; 
      } 
     } 
    } 

    xmlHttp.onreadystatechange=function(){ 
     if(xmlHttp.readyState==4){ 
      document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText; 
      setTimeout('Ajax()',10000); 
     } 
    } 
    xmlHttp.open("GET","MQSTATUS.jsp",true); 
    xmlHttp.send(null); 
} 

window.onload=function(){ 
    setTimeout('Ajax()',10000); 
} 
</script> 

它給我的錯誤是在該行未知的運行時錯誤

<code> 
    xmlHttp.open("GET","MQSTATUS.jsp",true); 
</code> 

我應該如何修改代碼,我試圖改變命名並做一些修改,但它不起作用。我試圖把/之前的url

<code> 
    xmlHttp.open("GET","/MQSTATUS.jsp",true); </code> 
+3

你用jquery-ajax標記了你的問題。那你爲什麼不使用jquery?它具有快捷方法。 – 2012-01-02 12:57:03

回答

0

我將首先分離XHR對象和AJAX調用的初始化和更新。這樣,你只有一個XHR對象,並且它始終如一地告訴它做什麼。 首先您從窗口對象的onload處理程序初始化XHR對象。然後,通過在刷新按鈕的onclick處理程序中調用updateAjax(),向此對象發出新請求。它會是這個樣子:

<script type="text/javascript"> 
var xmlHttp; 

function initAjax() { 
    try { 
     xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari 
    } catch(e) { 
     try { 
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer 
     } catch(e) { 
      try { 
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch(e) { 
       alert("No AJAX!?"); 
       return false; 
      } 
     } 
    } 

    xmlHttp.onreadystatechange = function() { 
     if(xmlHttp.readyState == 4) { 
      document.getElementById('ReloadThis').innerHTML = xmlHttp.responseText; 
     } 
    } 
} 

function updateAjax() { 
    xmlHttp.open("GET", "MQSTATUS.jsp", true); 
    xmlHttp.send(null); 
} 

window.onload = function() { 
    initAjax(); 
} 
</script> 

然後在你的HTML把

<input type="button" value="Refresh" onclick="updateAjax()" /> 

希望這有助於你一點。

+0

感謝這項工程 – user1080320 2012-01-02 20:44:40

+0

我試過了,但沒有奏效。它仍然顯示未知的運行時錯誤並引用鏈接 – user1080320 2012-01-03 12:43:36

0

This可以是你要找的,使用jQuery。 Here的例子(你也可以在上一個鏈接中找到)

谷歌上的其他搜索顯示了相同的方法:你「隱藏」div,然後你再次加載內容並顯示它,通過鏈接需要的操作。不過,我不認爲你可以只用javascript來做,你需要一個外部庫(如jquery)

+0

由於jQuery是一個JavaScript庫,你無法對它做任何事情,這是JavaScript無jQuery無法完成的。 – Flygenring 2012-01-02 13:07:50

+0

嗡嗡聲,我只是意味着與jQuery很容易,但事實證明,這不是很好:) – 2012-01-02 13:32:09

+0

同意,jQuery使事情變得簡單,但我認爲這是有點多加載整個庫只是爲了做一點AJAX 。另外,我認爲你不應該隱藏更新的div,只需加載新內容就可以工作。 – Flygenring 2012-01-02 13:51:14

-1

嘗試添加一個'UpdatePanel'AJAX控件到按鈕控件。添加這種代碼在按鈕的Click事件:

<asp:UpdatePanel runat="server"> 
     <ContentTemplate>   
      <asp:Label ID="Label1" runat="server"></asp:Label> 
      <asp:Timer ID="timer1" Interval="500" runat="server" ontick="timer1_Tick"></asp:Timer> 
      <%--<asp:Button ID="Button1" runat="server" Text="Button" />--%> 
     </ContentTemplate> 
</asp:UpdatePanel> 
+1

OP不使用ASP。 – 2012-01-02 13:14:02

0

我不知道,但我覺得你應該先刪除的setTimeout(「阿賈克斯()」,10000);在你的AJAX調用中。 其次,嘗試添加此jsp的完整部署路徑。 即。如果您的部署路徑爲http://localhost:8080/MYAPPLICATION/MQSTATUS.jsp,那麼請嘗試xmlHttp.open(「GET」,「/ MYAPPLICATION/MQSTATUS.jsp」,true);