2014-07-04 157 views
-1

如何使用javascript檢查php腳本中的值?javascript每5秒輪詢一次php腳本

我想這樣做:

<script type="text/javascript"><!-- 
var innitialID = get_file_contents(lastPresentID.php); //get_file_contents(lastPresentID.php); 

function myTimeout() { 
    var freshestID = get_file_contents(lastPresentID.php); 
    if(freshestID != innitialID) { 
      location.reload(); 
     } 
    setTimeout(myTimeout, 5000); 
} 
window.onload = myTimeout; 
</script> 

php腳本生成一個整數,它是一個表的最後一個ID。

謝謝!

+1

'get_file_contents'不是JavaScript函數 –

+0

get_file_contents函數做什麼?它是一個帶有ajax調用的js函數嗎? – Husman

+0

好的,但是您知道如何將其替換爲真正的javascript嗎? 我很想學習如何正確完成這個任務 –

回答

0
<script type="text/javascript"> 
    window.onload = doAjax(true); 
    setInterval(doAjax, 5000); 

    var initialID = -1, freshestID; 

    function doAjax(initial) { 
     var xmlhttp; 
     if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari 
     } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 
     } 

     xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
      if(initial) { 
       initialID = xmlhttp.responseText; 
      } else { 
       freshestID = xmlhttp.responseText; 
       if (initialID != freshestID) 
        location.reload(); 
      }     
     } 
     } 

     xmlhttp.open("GET", "lastPresentID.php", true); 
     xmlhttp.send(); 
    } 
</script> 

在這裏,我們去,更新與在那裏的ajax調用。首先設置initialId變量,然後間隔代碼每5秒運行一次並更新freshestId變量,並進行比較。

編輯:代碼現在不重複。

+1

1.大量代碼複製2.刪除舊的不正確答案 –

+0

@AshleyMedway 1. OP沒有使用任何ajax庫,所以一點點重複的純JavaScript代碼可能會幫助他學習一些東西2.對以前的答案有一些評論可能對理解這個答案有價值3.如果你不會很有建設性,請放棄釣魚:) – Husman

+0

我非常有建設性,你不需要一個AJAX庫編寫不重複的代碼。請參閱:http://jsfiddle.net/FDyf8/ –

0

以下負載碼將分配給oldVal。然後使用setInterval將每5秒更新newVal並檢查是否newVal != oldVal

它使用AJAXlastPresentID.php獲取值。

var oldVal = 0; 
var newVal = 0; 

function loadXMLDoc(old) { 
    var xmlhttp; 

    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4) { 
      if(xmlhttp.status == 200){ 
       if(old) 
       { 
        oldVal = xmlhttp.responseText; 
       } 
       else 
       { 
        newVal = xmlhttp.responseText; 

        if(newVal != oldVal) 
         alert("test"); 
       }     
      } 
      else if(xmlhttp.status == 400) { 
       alert('There was an error 400') 
      } 
      else { 
       alert(xmlhttp.status) 
      } 
     } 
    } 

    xmlhttp.open("GET", "lastPresentID.php", true); 
    xmlhttp.send(); 
} 

function timeout() { 
    loadXMLDoc(false); 
} 

loadXMLDoc(true); 
setInterval(timeout, 5000);