javascript + asp.net - вызов функций javascript из c # и передача объекта - PullRequest
1 голос
/ 21 октября 2010

Я довольно новичок в веб-разработке.

По сути, я использую холст HTML5 для рендеринга контента и функции JavaScript, которые очищают и рендерит на холст.

Янадеялся вызвать веб-сервис для получения данных, которые могли бы повлиять на контент, что, как я полагаю, легче всего сделать из 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>

Какой самый простой (если это вообще возможно) способ вызова функции Update (newVal) из C # (Page.asp.cs), и как это можно настроить для периодического выполнения?Каковы будут ограничения на то, какие объекты могут быть переданы этой функции?

Dictionary<String, Double>

было бы очень полезно.

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Во-первых, из Javascript я бы обычно избегал использования веб-сервисов на основе xml. Возвращаемые данные - это 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/

Надеюсь, это поможет.

1 голос
/ 21 октября 2010

Когда именно нужно вызывать обновление после загрузки страницы? Если это происходит каждые пять секунд, может быть проще аккуратно установить какой-то интервал на основе Javascript (убедитесь, что вы проверяете определенные условия, чтобы убедиться, что интервал выходит из состояния ошибки).

В зависимости от того, какие данные у вас есть, вы можете захотеть настроить метод в C #, который передал бы ему определенные параметры POST или GET с помощью вызова 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
}

Этот код будет запускать функцию обновления каждые пять секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...