2014-07-04 120 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);