2010-10-21 76 views
1

我對web開發相當陌生。javascript + asp.net - 從c#調用javascript函數並傳遞一個對象

基本上我使用HTML5畫布來渲染內容和清晰並呈現到畫布的javascript函數。

我希望調用一個Web服務來獲取會影響內容的數據,我相信這是最容易從C#完成的,並且想知道如何使用它來定期調用一個可以更新值的JavaScript函數正在呈現給畫布?

爲了使這更清楚,我有這樣的事情:

哦,我還使用jQuery的方式,部分原因是因爲有人告訴我。

Page.asp:

<body> 
    <form id="form1" runat="server"> 
     <canvas id="canv" width="200" height="200"> 
      Cannot display canvas because your web browser is a fail. 
     </canvas> 
     <script type="text/javascript"> 

     var ctrls = new Array(); 

     $(document).ready(function() { 
      var canvas; 
      var context; 
      canvas = $("#canv").get(0); 
      if (!canvas) { 
       alert("Failed to get canvas"); 
       return; 
      } 

      context = canvas.getContext('2d'); 
      if (!context) { 
       alert("Failed to get context"); 
      } 

      var x; 

      x = new Object(); 
      x.value = 0; 
      x.parent2d = context; 
      ctrls.push(x); 

      window.setInterval(Render, 25); 
     }); 

     function Render() { 
      var i; 
      for (i = 0; i < ctrls.length; i++) { 
       ctrls[i].parent2d.clearRect(0, 0, 200, 200); 
       //Draw stuff. 
      } 
     } 

     function Update(newVal) { 
      var i; 
      for (i = 0; i < ctrls.length; i++) { 
       ctrls[i].value = newVal; //For example 
      } 
     } 

     </script> 
    </form> 
</body> 

什麼是最簡單的(如果它甚至有可能)的方式來調用從C#更新(的newval)函數(Page.asp.cs),以及怎麼會這樣設置要定期完成? 什麼對象可以傳遞給這個函數有什麼限制?

Dictionary<String, Double> 

將是非常有用的。

回答

1

什麼時候需要在頁面加載後調用更新?如果是每五秒鐘一次,可能會更容易仔細設置某種基於Javascript的時間間隔(確保您正在檢查某些條件以確保間隔在出現任何錯誤情況時退出)。

根據您擁有的數據,您可能希望在C#中設置一個方法,該方法通過jQuery $ .ajax()調用將特定的POST或GET參數傳遞給它。

例如:

$(document).ready(function() { 
var intervalId = setInterval("runUpdate()", 5000); 
}); 

function runUpdate() { 
//Make an ajax call here, setting up a variable called 'data' 

update(data);//Data is newVal, which was setup in the ajax call above 
} 

該代碼將運行更新功能每五秒鐘。

+0

嗨,更新將在定期調用Web服務(例如,每10秒)之後調用。我寧願使用C#進行Web服務調用,否則你知道一個好的Ajax教程嗎? – 2010-10-21 13:26:17

+0

另外,如何從javascript調用c#方法將是一個很好的解決方案。 – 2010-10-21 13:28:57

+1

Jquery的$ .ajax()方法非常簡單:http://api.jquery.com/jQuery。ajax /在C#中設計一個方法來處理jQuery在Ajax中發送它的任何參數,然後傳回一個基於文本的值。 $ .ajax(type:'POST',data:info_variable_sent_to_c_sharp,url:'/ Your/Site/method',success:function(){//在這裏做某事,它有效},error:function(){// Do別的,它失敗了}); – Mattygabe 2010-10-21 13:39:20

1

首先來自Javascript,我通常會避免使用基於xml的web服務。返回的數據是XML,其中有許多使用標記可能會導致傳輸速度變慢。

而是看看JSON。它快得多。然而,認證並不那麼容易。爲了幫助您瞭解其功能,twitter和facebook在其中使用API​​。

的JQuery可以使用JSON很容易

$.getJSON(someurl, function(jData) { 
//use returned data 
} 

您可能會發現有用的信息是:

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

希望這有助於。

+0

Web服務不是我的部門,所以我不幸遇到了一個XML問題! – 2010-10-21 13:36:06

相關問題