2014-01-30 22 views
0

我有下面的代碼來輪詢ASP中的應用程序變量。下面的代碼是我第一次啓動頁面時的第一次意義,如果應用程序(「NFC」)= 1,setinterval函數中的IF語句將捕獲它,顯示警報,然後重新加載頁面。現在的問題是頁面正在運行,如果另一個頁面再次將Application變量設置爲1,則下面的if語句將不再觸發。如果我手動刷新頁面,它將再次工作一次。在javascript中輪詢ASP應用程序變量

我放在頭部和身體和相同的結果。

有沒有人知道爲什麼會發生這種情況,我能做些什麼來實現這個功能?

此代碼是爲了儘量減少訪問數據庫。我目前每20秒訪問一次數據庫,如果應用程序變量發生變化,這將允許我只訪問數據庫,每5秒輪詢變量。

任何幫助,非常感謝。

謝謝約翰。

<% 
If request.querystring("R") = "reset" then 
Application("NFC") = 0 
response.redirect("test2.asp") 
end if 
%> 

    <script type="text/javascript"> 
     setInterval(function(){ 

    if('<%= Application("NFC")%>'== '1'){ 
    alert('NFC has changed. This alert is for testing and is not needed in final code'); 
    self.location='test2.asp?R=reset'; 
     } 

    }, 5000); 

    </script> 
+0

這個值一旦離開ASP服務器就被設置成石塊,就像JS一樣。你必須在該網址中獲取新值。如果該值發生了變化,則再向數據庫添加一個ajax。 – dandavis

+0

謝謝你的回覆......你知道AJAX中的簡單例程或任何獲取當前應用程序變量的例程。在搜索互聯網時,我正在爲會話變量找到大量的代碼,但對應用程序變量沒有任何幫助。你能指點我一些例子嗎? –

回答

0

基本上任何AJAX程序將做,jQuery是比這個新版瀏覽器,例如更強大的:

server.asp:

<%= Application("NFC")%> 

客戶端.js:

function aGet(turl, callback) { 
    var XHRt = new XMLHttpRequest(); 
    XHRt.onload= callback; 
    XHRt.open("GET", turl, true); 
    XHRt.send(""); 
} 

aGet("server.asp", function(e){ 
    alert(e.target.responseText); 
}); 

一旦你看到了,這很簡單,但很難搜索。這應該是有史以來最簡單的後端代碼... 使用應用程序對象使用未被使用但令人敬畏的RAM緩存的榮譽:如果使用正確,它可以實現很好的實時應用程序會費可以忽略不計的成本ping那個簡單的服務器頁面。

+0

這是完美而簡單的。它像一個魅力。 dandavis,你是男人。謝謝!!! –

+0

很高興爲您解決問題,並且您正在使用{應用程序}。 – dandavis

+0

經過測試,我發現這可以在Firefox中使用,但不能在IE中使用。 IE中的響應始終爲-0-。任何想法?謝謝,約翰 –