По сабмиту, форма не отправляется, а лишь записывает в БД. Обновление формы. Ответ от сервера в IE некорректен. В рабочем варианте с "кракозябрами" от сервера приходит. Проц при этом не грузит, память не жрет. Если очень много блоков, которые приходят аяксом, почему бы не подумать. Ответ написан более трёх лет назад. Не приходят данные в метод $.ajax success в ie 9. Ajax-запрос данные получает и текст ответа в отладчике ie я могу посмотреть.
Основы XMLHttp. Request. Объект XMLHttp. Request (или, как его кратко называют, «XHR») дает возможность из Java. Script делать HTTP- запросы к серверу без перезагрузки страницы. Несмотря на слово «XML» в названии, XMLHttp. Request может работать с любыми данными, а не только с XML.
Использовать его очень просто. Как правило, XMLHttp. Request используют для загрузки данных. Для начала посмотрим на пример использования, который загружает файл phones. Создаём новый объект XMLHttp. Request. var xhr = new XMLHttp. Request(). // 2. Конфигурируем его: GET- запрос на URL 'phones.
GET', 'phones. json', false). Отсылаем запрос. // 4. Книги На Немецком Для Начинающих.


Если код ответа сервера не 2. Как правило, используется GET либо POST, хотя доступны и более экзотические, вроде TRACE/DELETE/PUT и т.
URL – адрес запроса. Можно использовать не только http/https, но и другие протоколы, например ftp: // и file: //. При этом есть ограничения безопасности, называемые «Same Origin Policy»: запрос со страницы можно отправлять только на тот же протокол: //домен: порт, с которого она пришла. В следующих главах мы рассмотрим, как их можно обойти.
Синхронный запрос» означает, что после вызова xhr. После получения ответа выполнение продолжится со следующей строки.«Асинхронный запрос» означает, что браузер отправит запрос, а далее результат нужно будет получить через обработчики событий, которые мы рассмотрим далее. HTTP- авторизации, если нужны. Вызов open не открывает соединение.
Если код ответа сервера не 200, то это ошибка if (xhr.status!=. В IE8 и IE9 поддержка XMLHttpRequest ограничена: Не. AJAX и COMET . Что такое AJAX я думаю рассказывать не стоит, ибо с приходом. Добрый день, не работает ajax функция не пойму почему. Так данные всё-таки с сервера приходят?
Заметим, что вызов open, в противоположность своему названию (open – англ. Он лишь настраивает запрос, а коммуникация инициируется методом send. Синтаксис: Именно этод метод открывает соединение и отправляет запрос на сервер.
В body находится тело запроса. Не у всякого запроса есть тело, например у GET- запросов тела нет, а у POST – основные данные как раз передаются через body.
Вызов xhr. abort() прерывает выполнение запроса. Основные свойства, содержащие ответ сервера: status. HTTP- код ответа: 2. Может быть также равен 0, если сервер не ответил или при запросе на другой домен.
Text. Текстовое описание статуса от сервера: OK, Not Found, Forbidden и так далее. Text. Текст ответа сервера. Есть и ещё одно свойство, которое используется гораздо реже: response.
XMLЕсли сервер вернул XML, снабдив его правильным заголовком Content- type: text/xml, то браузер создаст из него XML- документ. По нему можно будет делать запросы xhr. Xml. query. Selector(. То есть, сервер возвращает JSON в виде текста, который браузер превращает в объект вызовом JSON.
Text). Если в методе open установить параметр async равным false, то запрос будет синхронным. Синхронные вызовы используются чрезвычайно редко, так как блокируют взаимодействие со страницей до окончания загрузки. Посетитель не может даже прокручивать её.
Никакой Java. Script не может быть выполнен, пока синхронный вызов не завершён – в общем, в точности те же ограничения как alert.// Синхронный запрос. GET', 'phones. json', false). Отсылаем его. // ..
Java. Script . Кроме того, забегая вперёд, заметим, что ряд продвинутых возможностей, таких как возможность делать запросы на другой домен и указывать таймаут, в синхронном режиме не работают. Из всего вышесказанного уже должно быть понятно, что синхронные запросы используются чрезвычайно редко, а асинхронные – почти всегда. Для того, чтобы запрос стал асинхронным, укажем параметр async равным true. Изменённый JS- код: var xhr = new XMLHttp.
Request(). xhr. open('GET', 'phones. Это означает, что после вызова xhr. Полный пример в действии.
При этом можно посмотреть «текущее состояние запроса» в свойстве xhr. State. В примере выше мы использовали только состояние 4 (запрос завершён), но есть и другие.
Все состояния, по спецификации: const unsigned short UNSENT = 0; // начальное состояние. OPENED = 1; // вызван open. HEADERS. В нём сервер отвечает на запрос digits, пересылая по строке из 1.
Server('.'). function accept(req, res) . Если протестировать пример выше в локальной сети, то в большинстве браузеров разрывы будут каждые 1. Чем это опасно? Хотя бы тем, что символы русского языка в кодировке UTF- 8 кодируются двумя байтами каждый – и разрыв может возникнуть между ними. Получится, что при очередном ready.
State в конце response. Text будет байт- полсимвола, то есть он не будет корректной строкой – частью ответа! Если в скрипте как- то по- особому это не обработать, то неизбежны проблемы. XMLHttp. Request умеет как указывать свои заголовки в запросе, так и читать присланные в ответ. Для работы с HTTP- заголовками есть 3 метода: set. Request. Header(name, value)Устанавливает заголовок name запроса со значением value. Например: xhr. set.
Request. Header('Content- Type', 'application/json'); Нельзя установить заголовки, которые контролирует браузер, например Referer или Host и ряд других (полный список тут). Это ограничение существует в целях безопасности и для контроля корректности запроса.
Поставленный заголовок нельзя снять. Особенностью XMLHttp. Request является то, что отменить set. Request. Header невозможно. Повторные вызовы лишь добавляют информацию к заголовку, например: xhr.
Request. Header('X- Auth', '1. Request. Header('X- Auth', '4. X- Auth: 1. 23, 4. Response. Header(name)Возвращает значение заголовка ответа name, кроме Set- Cookie и Set- Cookie. Например: xhr. get.
Response. Header('Content- Type')get. All. Response. Headers()Возвращает все заголовки ответа, кроме Set- Cookie и Set- Cookie.
Заголовки возвращаются в виде единой строки, например: Cache- Control: max- age=3. Content- Length: 4. Content- Type: image/png.
Date: Sat, 0. 8 Sep 2. GMTМежду заголовками стоит перевод строки в два символа . Этот формат задан стандартом. Таким образом, если хочется получить объект с парами заголовок- значение, то эту строку необходимо разбить и обработать. Максимальную продолжительность асинхронного запроса можно задать свойством timeout: xhr. При превышении этого времени запрос будет оборван и сгенерировано событие ontimeout: xhr. Оно появилось гораздо раньше, ещё до появления текущего стандарта.
В современных браузерах от него можно отказаться в пользу других, необходимо лишь, как мы увидим далее, учесть особенности IE8- 9. В IE8 и IE9 поддержка XMLHttp. Request ограничена: Не поддерживаются события, кроме onreadystatechange.
Некорректно поддерживается состояние ready. State = 3: браузер может сгенерировать его только один раз во время запроса, а не при каждом пакете данных. Кроме того, он не даёт доступ к ответу response. Text до того, как он будет до конца получен. Дело в том, что, когда создавались эти браузеры, спецификации были не до конца проработаны. Поэтому разработчики браузера решили добавить свой объект XDomain. Request, который реализовывал часть возможностей современного стандарта.
А обычный XMLHttp. Request решили не трогать, чтобы ненароком не сломать существующий код. Мы подробнее поговорим про XDomain. Request в главе XMLHttp.
Request: кросс- доменные запросы. Пока лишь заметим, что для того, чтобы получить некоторые из современных возможностей в IE8,9 – вместо new XMLHttp. Request() нужно использовать new XDomain.
Request. Кросс- браузерно: var XHR = (? XMLHttp. Request : XDomain. Request. var xhr = new XHR(); Теперь в IE8,9 поддерживаются события onload, onerror и onprogress.
Это именно для IE8,9. Для IE1. 0 обычный XMLHttp. Request уже является полноценным. Обычно ответы на запросы XMLHttp. Request кешируются, как и обычные страницы.
Но IE9- по умолчанию кеширует все ответы, не снабжённые антикеш- заголовком. Другие браузеры этого не делают.