Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.11.2010, 16:36
Интересующийся
Отправить личное сообщение для vandy3 Посмотреть профиль Найти все сообщения от vandy3
 
Регистрация: 28.10.2010
Сообщений: 14

Проблема с ajax в IE8
Здравствуйте. Пытаюсь обновлять определенный блок на странице динамически. Для этого написал функцию на javascript updateContent(url, block), которой передаются параметры куда обращаться и какой блок замещать. И в этой функции методом Post посылаю запрос на сервер php-скрипту.

Страница, html у меня имеет следующий вид:
<html>
<head><title></title></head>
<body>
<div>Шапка одинаковая для всех страниц</div>
<div id="content"></div>
<script>window.onload = function () {updateContent ( {url: 'script.php', block: 'content' });}<script>
</body>
</html>


Скрипт php при обращении к нему, проверяет содержится ли в массиве apache_request_headers() заголовок x-request-with, если не содержится, то подгружает шаблон выше, если содержится, то выполняет некоторые действия для получения содержимого и отдает содержимое в скрипт, который должен сделать content.innerHTML = responseText. Условно говоря, один и тот же скрипт смотрит, если к нему обращаются не через аякс, то выдает страницу целиком, а если через аякс (который встроен по событию загрузки страницы), то отдает содержимое. Во всех браузерах, кроме IE, работает как надо, а в IE8 я почему-то вижу шапку, и в блоке content опять шапку. И не могу понять, то ли виновато кэширование, то ли скрипт неправильно интерпретирует заголовки.
В самом скрипте стоят header:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: ".gmdate( "D, d M Y H:i:s")." GMT");

В скрипте JS:
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(data);


Проверка на обращение из аякс:
$headers = apache_request_headers(); $xhr = 0;
if ( !isset($headers['X-Requested-With']) ) { require_once "shablon.php"; }
else { $xhr = 1; }


Если пишу перед блоком проверки в php print_r($headers), то на странице наверху появляется распечатка массива заголовков без x-request-with,а в блоке content копия шапки, но без распечатки, должна же быть распечатка массива. Куда она девается? В чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 23.11.2010, 16:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Поставьте какой-нибудь снифер и посмотрите, что IE отправляет на сервер.
Ответить с цитированием
  #3 (permalink)  
Старый 23.11.2010, 17:10
Интересующийся
Отправить личное сообщение для vandy3 Посмотреть профиль Найти все сообщения от vandy3
 
Регистрация: 28.10.2010
Сообщений: 14

Спасибо за совет. Так же узнал, что IE8 есть developer tool (F12), нечто на подобие FireBug.

Проблема заключалась в следующем: даже несмотря на то, что в скрипте js написанно: setHeaders('X-Requested-With'...), IE8 почему-то передавал 'x-requested-with', а так как проверка осуществлялась с помощью '==', то вегда возвращалось false.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с JSON объектом в AJAX запросе jura4x01 jQuery 6 01.12.2010 15:40
ajax, iframe, chrome - проблема Aderba AJAX и COMET 2 04.08.2010 23:40
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08
Проблема с обработкой селектов html кода, пришедшего через ajax запрос Rage jQuery 6 26.01.2009 14:15