Допустим, на моей странице у меня есть такая функция:
function ReturnFoo(bar)
{
return bar.toString() + "foo";
}
Теперь я хотел бы, чтобы это вызывалось из ASP .NET, надеюсь, с фреймворком ASP .NET AJAX, поскольку я уже использую его в этой кодовой базе (я уже потратил 100k, может также использовать).
Кроме того, я хотел бы вернуть результат, возвращаемый этой функцией, а затем назначить его переменной, созданной на стороне сервера. И это ограничено ASP .NET 2.0.





Я не понимаю, как вы ожидаете, что серверный код вызовет клиентскую функцию ???
Вызовы AJAX выполняются со стороны клиента на сторону сервера!
Я делал это раньше, используя текстовый элемент управления, помеченный как скрытый с помощью автоматической отправки при изменении. Затем функция устанавливает текст этого элемента управления, который запускает обратную передачу.
Чтобы вызвать функцию со стороны сервера, просто зарегистрируйте какой-нибудь сценарий запуска, и он запустится при отображении страницы.
Если вы намерены повторно использовать некоторые функции как на стороне сервера, так и на стороне клиента, я бы предложил написать эту функцию на стороне сервера (aspx или asmx) и вызвать ее со стороны клиента (JavaScript) с помощью AJAX. Не уверен, ищете ли вы это.
Каждый раз, когда вы переходите между серверной и клиентской стороной, это похоже на то, что пользователь нажимает кнопку обновления в своем браузере с точки зрения производительности.
Это действительно то, что вы хотите сделать, поскольку ваш предлагаемый сценарий будет означать как минимум два постбэка.
Какая у этого цель? Было бы лучше, если бы вы могли оставить это у клиента.
Да, это непросто. Использование MS Ajax немного поможет. Вам нужно будет вставить код с сервера, чтобы вызвать эту функцию при загрузке страницы и присвоить возвращаемое значение скрытому полю, к которому сервер может получить доступ при обратной отправке.
Я должен сказать, что это решение - отстой, но другого пути я не знаю. Надеюсь, у кого-то будет лучшее решение.
В первом ответе Мэтт упомянул, что это невозможно (выполнить код на стороне клиента, пока он еще находится на сервере). И это правда.
Ваш комментарий о silverlight не совсем точен. Silverlight не может вызвать код на стороне клиента с сервера. Silverlight работает на клиенте точно так же, как JavaScript, так что это вызов от клиента к клиенту.
Не могли бы вы немного прояснить сценарий ... Думаю, вы спрашиваете вот о чем:
private void Page_Load()
{
string someValue = EXECUTE_JS_ON_CLIENT_AND_GET_RESULT();
// do some stuff here while still on the server...
}
Если это то, что вы хотите сделать, это невозможно. Находясь на сервере, вы не можете общаться с клиентом.
Вы это имели в виду?
Спасибо, -Тимоти
Напишите просто, где нужно вызывать javascript
Response.Write ( "предупреждение ('привет');")
В некоторых случаях это работает (и вам также нужно Response.Write окружающие теги <script>), но я столкнулся с проблемами, когда ASP выдает мне ошибки, когда я пытаюсь писать на клиентскую страницу, когда задействован Post-Back. .
Я хотел бы проверить JSON.Net (в сочетании с библиотекой [jQuery также бесплатен]), это решения с открытым исходным кодом, которые значительно упрощают эти проблемы.
Мэтт, я знаю, что это можно сделать с помощью Silverlight, но я хотел знать, возможно ли это с asp .net без Silverlight. С silverlight я могу напрямую получить DOM, я не знал, возможно ли это в asp .net.