Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Два вопроса по XMLHTTPRequest (https://javascript.ru/forum/misc/11931-dva-voprosa-po-xmlhttprequest.html)

Pluto 21.09.2010 21:33

Два вопроса по XMLHTTPRequest
 
Добрый день!
Обращаюсь к гуру JS пользующимися XMLHTTPRequest
Суть в следующем:
Написал JScript, обрабатывающий страницу сайта на стороне пользователя. А именно вытаскивающий из строки типа
<form method='post' class='inline' action='?a=search'><input type='hidden' name='k' value='31638' /><input type='submit'  class='cmd_all' value='ИСКАТЬ ДАЛЬШЕ' ></form>

параметры для POST-запроса.
Вот сам пост запрос:
xmlhttp.open('POST', '/main.php?a=search', false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('k=' + code);

С помощью HTTPAnalyzer-а определяю, что если нажать на кнопочку отправки формы мышкой запрос проходит и далее следует ответ сервера 302 с RedirectURL по которому потом проходит дополнительный запрос GET и обновляется страница браузера!
Вопрос: как мне получить этот ответ чтобы потом отправить на сервер GET-запрос?

Случай два.
Предистория та же. Такой же код формы на странице.
НО! после анализа логов запроса в HTTPAnalyzer-е видно, что в этом запросе никакого редиректа не приходит и дополнительного запроса GET к серверу нет! Однако страница после отправки формы нажатием на кнопочку благополучно обновляется. На мою же отправку POST-запроса приходит ответ 504 - Gateway Timeout
Путем анализа лога моего запроса и запроса "штатного" выяснил только одно расхождение в отправке
у меня передается:
Content-Transfer-Encoding: binary
в "штатном" запросе такого нет, зато в ответе есть следующее:
Content-Encoding: gzip
и соответсвенно пириходит содержимое новой страницы, отображаемое в браузере.
Вопрос: что мне добавить в мой POST-запрос чтобы получить корректный ответ?

И бонусом - может кто то знает как можно отправить данные формы из Javascript более простым способом?
т.е. как бы "сэмулировать" нажатие кнопки или что то подобное.
С get-запросами то я естественно не мудрствуя лукаво делаю
window.location.href = "main.php?a=search&k=" + code;

и дело в шляпе, а вот как быть с POST-запросами?
По крайней мере я не смог найти решения проще чем пытаюсь реализовать.

Надеюсь на вашу помощь.

Pluto 22.09.2010 06:27

уже накопал своими силами, что нужно добавить обработчик ответа сервера, но вот как именно и что там обрабатывать - чтобы заставить браузер "распарсить" новую страницу, пришедшую в ответе?

Гуру, где вы? :)

Gvozd 22.09.2010 07:29

http://xmlhttprequest.ru/
http://javascript.ru/ajax/

Pluto 22.09.2010 10:49

первый сайт весь перечитал несколько раз
Единственное что оттуда вынес полезного - это как создать xmlhttprequest.
Да еще описаны своиства и методы.
А как с ними работать - примеров вообще нет.
Только по open да send.
Порылся в нете - такое ощущение - что на других сайтах просто скопипастено содержимое http://xmlhttprequest.ru/
А хотелось бы побольше примеров :(

По второй ссылке:
там еще меньше информации в примерах, и самое главное, цитирую:
Цитата:

Более подробно о свойствах и применении XMLHTTPRequest - на http://xmlhttprequest.ru
Где есть более развернутые примеры?
Хотелось бы побольше

Kolyaj 22.09.2010 10:54

Pluto,
страницы неработающие приведите, мы не умеем по облакам гадать.

Pluto 22.09.2010 15:25

Страницы работают прекрасно. :)
Не работает мой скрипт на стороне клиента.
А точнее, я не знаю, с какой стороны подступиться к ответам сервера, поскольку серверную часть писал не я и она ничего не знает о моем скрипте :)
Мне просто хотелось чтобы привели реальные примеры работы со своиствами и мметодами XMLHTTPRequest
а не то что есть на http://xmlhttprequest.ru и клонированных с него ресурсах.
И если с первым вопросом я разобрался самостоятельно, то вот что делать со вторым вопросом, в котором в ответ на POST запрос приходит в ответ за-gzip-леная новая страничка я ума не приложу. Как заставить браузер ее обработать?

В принципе я решил свою задачу другим способом, но в идеале хотелось бы до конца разобраться со случаем xmlhttprequest

Kolyaj 22.09.2010 15:29

Какие примеры вам нужны? Делаете запрос, получаете ответ. Всё. Дальше делаете с этим ответом, что вам угодно, XHR это не касается.

Pluto 22.09.2010 22:43

Цитата:

Сообщение от Kolyaj (Сообщение 71619)
Дальше делаете с этим ответом, что вам угодно

Значит я неправильно задал вопрос.
Вот именно примеры этого "что угодно" мне и нужны.
потому что я не знаю что и как сделать с ответом :(


Часовой пояс GMT +3, время: 17:10.