2013-04-29 63 views
0

我的代碼有方法的背後:調用javascript後面的方法代碼?

protected void myMethod() 
    { 
     Literal1.Text = System.DateTime.Now.ToString(); 
    } 

我需要調用此方法的每一秒。我發現,我應該使用javascipt的,這是我素文字:

<script> 
    function test() { 
     // ??? 
    } 
    setInterval(test, 1000); 
</script> 

,但我不知道如何從JavaScript調用myMethod的?

+0

我認爲你的例子太簡單了。如果您讓我們知道您每秒鐘撥打什麼電話,以及爲什麼我們可以針對您的情況提供更好的答案。 – 2013-04-29 18:45:37

+0

@Hellfire我想他只是想知道如何從客戶端到服務器。 – Yatrix 2013-04-30 13:45:27

+0

我編輯我的問題,從我提供的鏈接拉例子。看一看。 – Yatrix 2013-04-30 13:51:39

回答

1

使用AJAX。 https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started這將允許您從客戶端調用指定的服務器端方法。

從上面的鏈接:

function makeRequest(url) { 
    if (window.XMLHttpRequest) { // Mozilla, Safari, ... 
     httpRequest = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { // IE 
     try { 
     httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
     try { 
      httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch (e) {} 
     } 
    } 

    if (!httpRequest) { 
     alert('Giving up :(Cannot create an XMLHTTP instance'); 
     return false; 
    } 
    httpRequest.onreadystatechange = alertContents; 
    httpRequest.open('GET', url); 
    httpRequest.send(); 
    } 

    function alertContents() { 
    if (httpRequest.readyState === 4) { 
     if (httpRequest.status === 200) { 
     alert(httpRequest.responseText); 
     } else { 
     alert('There was a problem with the request.'); 
     } 
    } 
    } 
})(); 

你必須與[WebMethod]屬性來裝飾你的服務器端方法,並聲明爲public和static。 http://msdn.microsoft.com/en-us/library/byxd99hx(v=vs.90).aspx

從MSDN:

[System.Web.Services.WebMethod(EnableSession=true)] 
public int GetNumberOfConversions() 
{ 
    return (int) Session["Conversions"]; 
} 

就是這麼簡單。

但是,我必須質疑每秒調用一次客戶機到服務器的方法。你可以單獨使用JavaScript處理日期業務。做一次往返不會對你有好處,我敢打賭。

1

如果你想避免服務器往返,你可能會因爲網絡延遲,您可以使用JavaScript像這樣

var now = new Date(); 
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");// Saturday, June 9th, 2007, 5:46:21 PM 

退房,看看有什麼其他類型的日期格式是可能的。

+0

往返,嗯,你是對的,這只是一個例子,在我的網站我endDate在數據庫中,我需要從數據庫中獲得endDate,然後動態顯示剩餘多少時間(endDate - System.DateTime。現在)。我怎樣才能做到這一點? – user2061066 2013-04-29 17:30:01

+0

嗯好的。如果你在數據庫中存儲時間值,然後檢查服務器可能會更好。在客戶端做所有事情都會帶來諸如處理時區等問題,如果您需要比較自己的時間值,這些問題會變得複雜。使用AJAX將是您最好的選擇。我會建議,而不是顯示剩下的確切時間做'2分鐘保留','不到30秒'等等,所以你不需要100%準確的時間。 – AContractor 2013-04-29 18:04:19

相關問題