вызвать клиентский JavaScript со страницы asp.net c # - PullRequest
1 голос
/ 16 марта 2012

У меня есть страница c # asp.net и функция обновления, которая будет обновлять базу данных. В этой функции я хотел бы вызвать некоторый клиентский JavaScript. Я много читал о регистрации сценария запуска в page_load (), но это всегда срабатывает при загрузке страницы (забавно!)

Как мне зарегистрироваться, а затем вызвать скрипт внутри моей функции обновления? Срабатывает, когда пользователь нажимает кнопку «обновить». Я попробовал следующее (внутри моей функции)

protected void doUpdate(object sender, EventArgs e) {

    string jScript;
    jScript = "<script type=text/javascript>alert('hello');<" + "/script>";

    ClientScript.RegisterStartupScript(GetType(), "Javascript", jScript);
}

но он не выстрелил. Есть идеи? Большое спасибо.

[обновление]

Теперь работает - функция выглядит следующим образом

protected void doUpdate(object sender, EventArgs e) {
    ScriptManager.RegisterStartupScript(this, GetType(),"Javascript", "cleanup();",true);
}

Cleanup () - это функция javascript в моем HTML. Спасибо за помощь, ребята :)

Ответы [ 3 ]

3 голосов
/ 16 марта 2012

Если элемент управления, вызывающий обратную передачу, находится внутри UpdatePanel, вам необходимо использовать

ScriptManager.RegisterStartupScript

1 голос
/ 16 марта 2012

Ваша кнопка «Обновление», вероятно, использует стандартное поведение кнопки ASP, что означает, что она type="submit", когда она отображается. Так как это так, вы можете просто использовать:

Page.ClientScript.RegisterOnSubmitStatement

Имейте в виду, что будет регистрировать скрипт для каждой обратной передачи, а не только кнопку Обновить. Итак, если вы хотите, чтобы при нажатии кнопки «Обновить» запускался только какой-то JavaScript, вам нужно проверить, является ли EventTarget UpdateButton.ClientID. Кроме того, RegisterOnSubmitStatement всегда добавляет теги <script>, поэтому не включайте их в оператор javascript.

Еще более простое решение - сама кнопка ASP также имеет свойство OnClientClick. Это будет запускать код на стороне клиента (javascript) при нажатии кнопки в браузере.

1 голос
/ 16 марта 2012

Вы не можете «выполнять» клиентские сценарии с веб-сервера (клиент знает, кто такой сервер, но не наоборот).

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

Что вы действительно ищете, так это связь через веб-сокет (дуплекс). Вы можете проверить алхимические websockets или SignalR (имеет довольно хорошую библиотеку с динамической генерацией прокси).

Причина, по которой этот 'скрипт всегда работает на Page_Load', заключается в том, что он эффективно внедряет ваш тег скрипта в HTML, возвращаемый для запрошенной страницы.

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