2013-03-15 75 views
1

我有一個簡單的JavaScript我用來從腳本中使用AJAX提供內容的DIV。只有在用戶點擊一個按鈕後纔會發生這種情況。我希望用戶按下按鈕(一次)和DIV後什麼充滿了腳本的德輸出:自動刷新按下按鈕後使用AJAX和FORM的時間間隔DIV

  1. 禁用按鈕
  2. 有DIV重新加載腳本的輸出每5秒使用AJAX

    < SCRIPT LANGUAGE = 「的JavaScript」>

function xmlhttpPost(strURL) { 
     var xmlHttpReq = false; 
     var self = this; 
     // Mozilla/Safari 
     if (window.XMLHttpRequest) { 
      self.xmlHttpReq = new XMLHttpRequest(); 
     } 
     // IE 
     else if (window.ActiveXObject) { 
      self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     self.xmlHttpReq.open('POST', strURL, true); 
     self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     self.xmlHttpReq.onreadystatechange = function() { 
      if (self.xmlHttpReq.readyState == 4) { 
       updatepage(self.xmlHttpReq.responseText); 
      } 
     } 
     self.xmlHttpReq.send(getquerystring()); 
    } 
function getquerystring() { 
     var form = document.forms['f1']; 
     var xword = form.xword.value; 
     qstr = 'addpost=' + escape(xword); // NOTE: no '?' before querystring 
     return qstr; 
    } 

    function updatepage(str){ 
     document.getElementById("result").innerHTML = str; 
    } 
    </script> 
    <form name="f1"> 
     <input name="xword" type="hidden" value="someword"> 
     <input value="betaling gereed" type="button" name="btn" onclick='JavaScript:xmlhttpPost("script.php")'></p> 
     <div id="result"></div> 
    </form> 
+0

我不明白,使代碼顯示爲代碼的方式。它只是沒有用。現在我不能再改變它了,因爲扎克是第一個。對不起,這個 – user2175718 2013-03-15 22:42:28

+0

我認爲它現在是可讀的......嘆氣.. – user2175718 2013-03-15 22:47:36

回答

0

使用setTimeout() JavaScript方法如下:

setTimeout ('xmlhttpPost("script.php")', 5000); 

在你updatepage()方法的末尾,調用此。

例如:

function updatepage(str){ 
    document.getElementById("result").innerHTML = str; 
    setTimeout ('xmlhttpPost("script.php")', 5000); 
    } 

要禁用按鈕,您將需要一個id屬性添加到您的按鈕標籤。然後,你可以禁用像這樣:

document.getElementById('btn').disable(); 
+0

你太棒了!謝謝! – user2175718 2013-03-15 22:53:41

+0

點擊後禁用按鈕的任何提示? ;-) – user2175718 2013-03-15 22:55:04

+0

onclick =「this.disabled = true」does not work :-( – user2175718 2013-03-15 22:57:53

0

您正在尋找JS時間事件?

w3shools jvascript time events

onclick="setInterval(func(), 5000)" 

OK編輯:

我沒有測試它,是已故

<input id="loadStuffButton" value="betaling gereed" type="button" name="btn" onclick='setInterval(xmlhttpPost("script.php"), 5000);'></p> 

function xmlhttpPost(strURL) { 
    document.getElementById('loadStuffButton').disabled = true; 
.... 
} 

編輯2:測試此 快速和骯髒的不阿賈克斯顯示如何setIntervalworks 5毫秒hehe

<form name="f1"> 
    <input name="xword" type="hidden" value="someword"> 
    <input id="loadStuffButton" value="betaling gereed" type="button" name="btn" onclick='setInterval(function(){xmlhttpPost("script.php")}, 500);'></p> 
    <div id="result"> 
     test 

    </div> 
</form> 
<script> 
    i = 1; 
    function xmlhttpPost(strURL) { 
     document.getElementById('loadStuffButton').disabled = true; 
     updatepage(i++); 
    } 

    function updatepage(str){ 
     document.getElementById("result").innerHTML = str; 

    } 
</script> 
+0

我不確定。我已經嘗試與settimeout()結合使用onload,但它不斷刷新整個頁面,而不是div。 – user2175718 2013-03-15 22:51:29

+0

謝謝你的努力,但現在一切都好了。我可以問另一個問題嗎? – user2175718 2013-03-15 23:07:55

0

無限重複的Ajax調用:

var refresh = false, 
    btn = document.getElementById("btn"); 

btn.onclick = function(){ 
    refresh = true; 
    this.disable(); 
    fetchData("script.php"); 
} 

function fetchData(strURL){ 
    while(refresh){ 
     setTimeout(xmlhttpPost(strURL), 5000); 
    } 
} 

和:

<form name="f1"> 
    <input name="xword" type="hidden" value="someword"> 
    <input value="betaling gereed" type="button" id="btn" name="btn"></p> 
    <div id="result"></div> 
</form>