PDA

Просмотр полной версии : Передача параметра на стороне сервера минуя один файл ...


LaGor
24.05.2002, 09:40
Такая проблема. Есть файл 1.htm в котором есть форма, в ней поле воода. Есть ещё один файл 2Fr.htm в котором описаны два фрэйма Fr1.asp и Fr2.asp. Происходит передача параметра вводимого в форме файла 1.htm в фрэйм Fr2.asp.
Вопрос: Как мне получить этот параметр на стороне сервера в файле Fr2.asp?
Хотелось бы избежать такоговарианта, как: Файл 2Fr.htm делать asp'шным и в нём получать этот параметр, а потом передавать через адресную строку или так же через форму.

Crazy
24.05.2002, 10:39
Хотелось бы избежать такоговарианта, как: Файл 2Fr.htm делать asp'шным и в нём получать этот параметр, а потом передавать через адресную строку или так же через форму.

1. Не избежишь. Тебе все равно придется сделать обработчик формы asp'шным. Будет ли это именно фреймсет -- не так уж важно (к примеру, можно посадить обработчик между формой и фреймсетом и передать переменную в сессии, но это только хуже).
2. Чем тебе не нравится это решение?

LaGor
24.05.2002, 10:50
Сабж, хотя возможно и я не правильно вас понял (тормажу малость после ночи).
Есть цепочка:
файл с формой --> файл с описанием фрэймов (frameset) --> файл фрэйма
Дак вот. я понимаю, что обработчик параметров обязательно должен быть asp'шным. В мойм случае файл фрэйма asp'шный.
Ну дак вот я хотел узнать как мне получить параметр передаваемый с первого звена цепочки в третьем звене, минуя второе звено? Т.е. чтобы файл содержащий описание фрэймов не был asp'шным и не обрабатывал параметр с дальнейшей его передачей в фрэйм.

Crazy
24.05.2002, 10:53
Оригинал написал(а) LaGor
Дак вот. я понимаю, что обработчик параметров обязательно должен быть asp'шным.

Под обработчиком параметров понимается тот файл, на который указывает атрибут action тэга <form>.

Лучше всего -- если это будет фреймсет промежуточная форма, которая отредиректит на фреймсет. Это спасет от побочных эффектов при Refresh'е фреймсета.

Проще всего -- сделать обработчиком сам фреймсет. Это сохраняет естественную последовательность загрузки файлов.

Можно сделать обработчиком сам фрейм. А на стороне клиента Javascript'ом проверять наличие фреймсета и при его отсутствии -- редиректить. Но придется сделать во фрейме защиту от повторной активациит обработчика.

Так что лучше -- первое или второе решение.

LaGor
24.05.2002, 11:06
Если честно, то третее я немного не понял

Можно сделать обработчиком сам фрейм. А на стороне клиента Javascript'ом проверять наличие фреймсета и при его отсутствии -- редиректить. Но придется сделать во фрейме защиту от повторной активациит обработчика.

И чём отличается первый вариант от второго? Ведь и во-втором предётся передовать параметр. После обработки всё равно что-то останется либо результат, либо тот же параметр.

Crazy
24.05.2002, 11:13
После обработки всё равно что-то останется либо результат, либо тот же параметр.

Не факт. Если тебе нужны параметры для того, чтобы их обработать и выдать ответ, то ты можешь при первом обращении -- с параметрами -- провести обработку и сохранить результат в сессии. ри втором обращении -- без параметров -- вынуть результат из сессии и показать.

Минусы этого варианта очевидны, но работать это извращение будет.

LaGor
24.05.2002, 11:43
Лучше всего -- если это будет фреймсет промежуточная форма, которая отредиректит на фреймсет. Это спасет от побочных эффектов при Refresh'е фреймсета.

А можно этот вариант на примере разобрать?

И ещё ни у кого не возникало такого? Я недавно установил MSIE 6.0 и теперь он почему-то просить загрузить некоторые asp-файлы на винт. Причём избирательно. Никто не знает в чём дело. Я так понял, что у него (IE) , на некоторые типы файлов стоит защита, потому и спрашивает (ну на exe к примеру), но при чём тут .asp я понять не могу. Подскажите кто знает.

Crazy
24.05.2002, 11:50
Оригинал написал(а) LaGor

А можно этот вариант на примере разобрать?

Имеем:
form.html
action.asp
frameset.html
frame1.asp
frame2.asp

В form.html имеем тэг <form action="action.asp">

В action.asp:
1. Принимаем параметры.
2. Выполняем обработку.
3. Сохраняем в сессии результат.
4ю Редиректим на frameset.html

В frame*.asp:
1. Берем из сессии результат обработки. Не забываем обработать ситуацию с отсутствием разультата (юзер нажал Refresh когда сессия уже умерла).
2. Отображаем результат.

И ещё ни у кого не возникало такого? Я недавно установил MSIE 6.0 и теперь он почему-то просить загрузить некоторые asp-файлы на винт.

Если соглашаешься -- что оказываетяс в файле? Исходник или отрендеренный код?

В принципе, такое поведение является нормальным, если внутри asp был выставлен content-type отличный от text/html.

LaGor
24.05.2002, 11:56
А без сохранения в сессии. Именно передача параметра. И обработка тоже так не пойдет так как этот параметр обрабатывается и сразу получается в результате его обработке результат, большой результат, который и нужно отобразить в фрэйме.
По поводу второго вопроса. Извиняюсь, вопрос отменяется, просто я тормоз (устал уже). Я asp файл запускал не через сервер, а с винта :)