Member 12637386 Ответов: 2

Aspx. vb код за вызовом из javascript и HTML


Вызов страницы aspx.vb из тега <a> работает нормально и выполняет код в подзаголовке page_load. Затем Sub Page_Load вызывает javascript. Это тоже прекрасно работает.

Вызов страницы aspx.vb из javascript/jquery работает нормально и выполняет код в подзаголовке page_load. Затем Sub Page_Load вызывает javascript. Однако это не работает. И не выбрасывает ошибку.

Что я уже пробовал:

Используя метка -

<a> href='BufferDownLoad.aspx'>test</a>


Вызывает aspx.vb Page_Load нормально.
В aspx-файл.VB в реестре в Я сделать вызов в JavaScript -

Элемента управления scriptmanager.RegisterStartupScript(Меня, Меня.Метод gettype(), "testCall", "testCall();", правда)

Это прекрасно работает.

Если я использовать JavaScript/jQuery, чтобы вызвать .aspx-файл.В. Б. Таким образом, -

$.вам("BufferDownLoad.aspx-файл")

Page_Load выполняется нормально. Но вызов javascript -

Элемента управления scriptmanager.RegisterStartupScript(Меня, Меня.Метод gettype(), "testCall", "testCall();", правда)

не действовать. И это не выбрасывает ошибку.

Что могло случиться?

2 Ответов

Рейтинг:
2

Member 12637386

Я придумал другой способ. Вместо того чтобы сервер пытался вызвать javascript, я попросил javascript вызвать сервер, заставить сервер сделать это и передать результат обратно клиенту. Если результат положительный, я заставляю клиента вызвать javascript -

функция newList() {
$. get ("BufferDownLoad.aspx?type=newAddList", функция (результат) {
if (result = " файл удален") {
createMailList()
}
});

Хотя Спасибо за информацию, Ричард.


Рейтинг:
0

Richard Deeming

Ваш Page_Load метод-это не "вызов" кода Javascript. Он регистрирует блок скрипта для отображения в HTML-ответе, который будет возвращен при загрузке страницы.

Когда вы нажимаете на ссылку на страницу, весь документ браузера заменяется HTML-кодом, возвращаемым вашей страницей. Это включает в себя загрузку и выполнение блоков скриптов в HTML

Когда вы используете метод jQuery.get() [^] чтобы запросить страницу, HTML-код загружается в переменную. Ни один из блоков скрипта в возвращаемом HTML-файле не будет выполнен.

Как вы решите эту проблему, зависит от того, что вы хотите сделать с возвращаемым HTML-кодом. Возможно, Вам повезет больше. элемент управления UpdatePanel[^] вместо.


Member 12637386

хмм...
Тогда можно ли было бы выполнить код в переменной, которую создает метод jQuery. get?

Спасибо

Richard Deeming

Возможно. Вам нужно будет добавить .done(function(theHtml){...}) обратный звонок на ваш $.get вызовите, а затем извлеките и выполните сценарии. Этот ответ StackOverflow[^] есть способ сделать это.

Member 12637386

Ну, ты знаешь. Я думаю, что понимаю немного лучше. Если вся страница браузера будет заменена кодом javascript, это не сработает.

Что мне нужно сделать, так это когда клиент нажимает кнопку, сервер должен быть вызван и проверить, существует ли файл, и удалить его (у меня это записано). Затем оттуда нужно выполнить еще один javascript, который создает новый файл (у меня это тоже есть).

Member 12637386

продолжать... JavaScript вызывает сервер, сервер удаляет файл. Когда файл удаляется, клиент должен выполнить больше javascript без дополнительного пользовательского ввода.

Возможно, есть способ просто вернуться к исходному вызову javascript, когда сервер закончит удаление файла?

Richard Deeming

Похоже, что эти действия были бы лучше в качестве веб-сервиса или метода страницы:
Предоставление веб-служб клиентскому скрипту в ASP.NET Аякс[^]

Таким образом, метод может возвращать значение, указывающее на результат операции, и затем вы можете использовать .done(function(result){ ... }) обратный вызов для выполнения следующего этапа.

Member 12637386

Спасибо, Ричард. Я изучу ваши рекомендации. Возможно, я сбился с пути истинного.
Я собираюсь оставить это открытым еще немного на случай, если у кого-то еще есть комментарии.