javascript+;asp.net-从c#调用javascript函数并传递对象

javascript+;asp.net-从c#调用javascript函数并传递对象,c#,javascript,asp.net,html,canvas,C#,Javascript,Asp.net,Html,Canvas,我对网络开发相当陌生 基本上,我使用HTML5画布来呈现内容,使用javascript函数来清除并呈现画布 我希望调用一个web服务来获取会影响内容的数据,我认为这在C#中最容易实现,我想知道如何使用它来定期调用javascript函数来更新呈现到画布上的值 为了更清楚地说明这一点,我有这样的想法: 哦,顺便说一下,我也在使用jquery,部分原因是我被告知要这么做 Page.asp: <body> <form id="form1" runat="server">

我对网络开发相当陌生

基本上,我使用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>

无法显示画布,因为您的web浏览器失败。
var ctrls=新数组();
$(文档).ready(函数(){
var帆布;
var语境;
canvas=$(“#canv”).get(0);
如果(!画布){
警报(“未能获取画布”);
返回;
}
context=canvas.getContext('2d');
如果(!上下文){
警报(“获取上下文失败”);
}
var x;
x=新对象();
x、 数值=0;
x、 parent2d=上下文;
中心推力(x);
设置间隔(渲染,25);
});
函数Render(){
var i;
对于(i=0;i
从C#(Page.asp.cs)调用Update(newVal)函数的最简单方法是什么(如果可能的话),以及如何设置为定期执行? 对哪些对象可以传递给此函数有什么限制

Dictionary<String, Double>
字典

这将非常有用。

页面加载后究竟什么时候需要调用update?如果是每五秒钟一次,那么仔细地设置某种基于Javascript的间隔可能会更容易(确保您检查了某些条件,以确保在出现任何错误条件时,间隔退出)

根据您所拥有的数据,您可能希望在C#中设置一个方法,该方法给定某些POST或通过jQuery$.ajax()调用将参数传递给它

例如:

$(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
}

该代码将每五秒钟运行一次更新功能。

首先,从Javascript开始,我通常会避免使用基于xml的web服务。返回的数据是XML,它有许多不必要的标记,这可能会导致传输缓慢

相反,看看JSON。快多了。然而,身份验证并不那么容易。为了帮助你理解它的威力,twitter和facebook都在那里使用它

JQuery可以非常轻松地使用JSON

$.getJSON(someurl, function(jData) {
//use returned data
}
您可能会发现阅读以下内容很有用:


希望这能有所帮助。

您好,定期调用web服务(例如,每10秒)时会调用更新。我更喜欢从C#调用web服务,否则你知道一个好的ajax教程吗?或者,如何从javascript调用C#方法将是一个好的解决方案。Jquery的$.ajax()方法相当简单:一旦你用C#设计了一个方法来处理Jquery用ajax发送的任何参数,然后传回一个基于文本的值。$。ajax(键入:“POST”,数据:info_variable_发送给_c_sharp,url:“/Your/Site/method”,成功:function(){//Do something here,it work},错误:function(){//Do something here,it failed});本质上,动作序列的高级视图是这样的:1。页面加载2。Javascript创建10秒计时器3。每隔十秒钟,调用“runUpdate”javascript函数4。runUpdate执行ajax请求,从应用程序5中获取“新值”。runUpdate使用前面提到的“新值”6调用update()。步骤3-5一直重复到时间结束。我如何获得返回值?web服务不是我的部门,因此我很不幸地被XML服务卡住了!