2012-05-18 57 views
0

我想在不重新加載頁面的情況下刷新頁面上的標籤。如何在不重新加載頁面的情況下刷新標籤

該頁面用於發送短信。因爲我使用的是連接到COM端口的GSM調制解調器,所以這是一個相當緩慢的過程,每個文本需要大約3秒。 (有一個很長的原因,我爲什麼使用串行GSM調制解調器,而不是在線服務或USB連接。)

可以指定多個數字,由";"定界。我想在每次發送文本後立即更新頁面;但目前它只是在最後一次更新標籤。達到此目的最簡單的方法是什麼?想法可能是AJAX,JavaScript或Threading。 (正如我說的,簡單就是好!)

當前代碼:

SerialPort sp = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One); 
     try 
     { 
      String[] numbers = tbNo.Text.Split(';'); 


      foreach (string n in numbers) 
      { 

       sp.Open(); 

       sp.Write("AT+CMGF=1" + (char)(13)); 

       Thread.Sleep(200); 

       sp.Write("AT+CMGS=" + n.Replace(" ", string.Empty) + (char)(13)); 

       Thread.Sleep(200); 

       sp.Write(tbMsg.Text + (char)(13) + (char)(26)); 

       Thread.Sleep(3000); 

       sp.Close(); 

       Label1.Text = Label1.Text + "Message sent to " + n + "<br />"; 

      } 

     } catch (Exception error) { 

      Label1.Text = error.Message; 
     }; 
+0

Ajax,*是* Javascript。 (這是j代表的) –

回答

0

,最好的辦法是建立在服務器端的服務,如果您有ASP.net,它可以是一個WCF休息服務,發送一個post請求到服務器作爲ajax調用,並在收到結果後在javascript中更改label text

0

你一定要爲此使用一些AJAX。其中一個很容易實現的方法是使用SignalR

SignalR是一個支持客戶端和服務器之間的實時連接的框架。這使得你的代碼更容易。如果你不使用SignalR,你將不得不手動執行諸如輪詢(客戶端瀏覽器每隔X秒詢問一次你的任務的狀態)或其他變化。

SignalR隱藏使用的底層機制並在服務器和客戶端之間創建連接。

您在服務器上的代碼會是這個樣子:

public class SmsHub : Hub 
{ 
    public Task SendMessages(string input) 
    { 
     // ... send sms message 

    Caller.updateStatus('Message send!'); 
    } 
} 

和你的客戶你會使用JavaScript集線器來發送和接收消息。 updateStatus函數可以將HTML消息附加到某些信息div。

這是一個不錯的blog post斯科特Hanselman,也可以幫助你開始。

相關問題