Использование XMLHttpRequest для отображения всплывающего окна - PullRequest
0 голосов
/ 09 февраля 2009

Я пишу веб-приложение ASP.NET 3.5, в котором отображается список элементов. Я хочу иметь возможность отображать немодальное всплывающее окно с подробной информацией, когда пользователь выбирает элемент. Я хочу отображать несколько всплывающих окон одновременно. (т. е. пользователь может щелкнуть элемент, чтобы просмотреть его детали, а затем щелкнуть другой элемент, чтобы получить другое всплывающее окно.) В настоящее время я вызываю RegisterStartupScript во время обратной передачи, чтобы написать сценарий «window.open (...)» на странице при -renders. Проблема, конечно, в том, что для этого требуется полная обратная передача страницы и обновление.

Мне пришло в голову, что это может быть идеальным использованием для XMLHttpRequest или AJAX, но я не знаю, как это сделать (или вообще возможно ли это или разумно сделать это). Может кто-нибудь показать мне путь?

У меня установлены расширения AJAX, но я бы предпочел не использовать AJAX Control Toolkit.


EDIT: Некоторое пояснение: когда пользователь выбирает элемент, возникает пользовательское событие. На сервере я обрабатываю это событие и использую некоторую серверную логику для создания URL-адреса, который я затем использую с RegisterStartupScript для создания сценария «window.open (myUrl ...)». Но отправка всей страницы обратно для этого кажется неэффективной, и я хотел бы знать, могу ли я просто вызвать простую серверную функцию, которая создает URL-адрес и отправляет его обратно без необходимости обхода всей страницы.

Ответы [ 3 ]

1 голос
/ 09 февраля 2009

Создание всплывающего окна имеет мало общего с AJAX, и намного больше связано с JavaScript. Смотрите библиотеку диалогов jQuery здесь. Затем вы можете использовать AJAX API jQuery для грязной работы вашего сервера:)

jQuery Dialog UI

-

Билл Конрад
Devtacular - Руководства по веб-разработке

0 голосов
/ 09 февраля 2009

Вы можете использовать Окно DHTML Window . Он предлагает много способов отображения модального или немодального окна. Также он поддерживает AJAX.

Вы можете использовать dhtmlwindow для открытия нового окна или dhtmlmodal, чтобы открыть новое модальное окно.

Конечно, вы можете редактировать его в соответствии с вашими требованиями. Пример:

var insWindow = dhtmlmodal.open("insbox", "iframe","UserMaster.aspx?" + queryStr, "User Master", "width=425px,height=500,center=1,resize=0,scrolling=1", "recal");
0 голосов
/ 09 февраля 2009

Вам действительно нужно открыть новое окно? Сегодня в моде открытие абсолютно позиционированного DIV или нового слоя поверх текущей страницы в том же окне.


Редактировать:

Я не думаю, что это ограничило бы количество всплывающих окон, в наши дни есть некоторые полезные вещи с библиотеками, такими как jQuery + jQuery UI, вы можете просто создать столько DIV / слоев, сколько вам нужно сделать их подвижными, изменять размер и т. д. Единственное, что есть в реальных всплывающих окнах, а в других - нет, они не отображаются на панели вкладок / панели задач.

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

Внедрение типичного всплывающего окна oldschool, несомненно, намного проще для вас, но оно также сталкивается с проблемами с блокировщиками всплывающих окон конечного пользователя. У меня просто была эта проблема @ моя работа, им нужно было сделать всплывающее окно во время процесса аутентификации сертификата по какой-то причине, и как только Yahoo выпустила новую версию своей панели инструментов, она перестала работать).

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