Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2013, 12:13
Аспирант
Отправить личное сообщение для Neznayka Посмотреть профиль Найти все сообщения от Neznayka
 
Регистрация: 08.03.2013
Сообщений: 37

$.getJSON не работает в ie9, ie8, ie7 (кроссдоменный)
Добрый день. Такая проблема, при попытке отправить запрос в ie9, ie8, ie7 $.getJSON на сервер, ничего не происходит, в остальных браузерах, включая и ie10 все работает.
Код :
var url = 'http://sven-soft.ru/ajax/j.server.php?type=3&synonym=' + $(this).val(); //url фиктивный 
$.getJSON(url, function(json)
{
	alert('123');
});

на стороне сервера все заголовки установлены (CORS) :
header('XDomainRequestAllowed: 1'); 
header("Access-Control-Allow-Origin: *"); // кроссдоменный доступ для всех
//header('Content-type: text/plain; charset=utf-8');
header('Content-type: application/json; charset=utf-8');
header('Cache-Control: no-store, no-cache');  // не кешировать
header('Expires: ' . date('r'));

все файлы в utr-8 без BOM.
В ie9, ie8, ie7 (6-ой не трогаю уже) не работает, никаких ошибок, ничего нет, просто не вызывается обратная функция, в консоле даже не происходит запрос на сервер.
Попробовал такой вариант :
var options = {
url: url, // скрипт обработки
type: 'GET',    // метод
dataType: 'json',    // тип возврщаемых данных
success: processJson,    // обработчик
crossDomain: true,
cache: false
};
	
$.ajax(options);
function processJson(json)
{
	alert('123');
}

ничего не изменило, все так-же.
Попробовал в url подставлять один из параметров текущую дату/время, хотя про кешироване речь не идет, запрос не отрабатывает ни разу :
var date = new Date();
var url = 'http://sven-soft.ru/ajax/j.server.php?type=3&synonym=' + $(this).val() + '&bred=' + date;

вообщем тоже ничего, тихо молча ничего не посылается.
Процедура, в которой делается этот запрос отрабатывает до момента посыла запроса, дальше ничего не происходит..
Версия jquery библиотеки 1.9.0, дополнительно опробовал на 1.10.1, такой-же результат

Незнаю куда дальше копать, подскажите пожалуйста.

Последний раз редактировалось Neznayka, 10.07.2013 в 13:40.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2013, 13:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Во-первых, IE7 не поддерживает кроссдоменные запросы.
Во-вторых, судя по всему jQuery не обеспечивает кроссбраузерный вариант запроса. В IE8-9 нужно использовать особый объект XDomainRequest вместо XMLHttpRequest. И кажется он имеет некоторые ограничения.
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2013, 13:34
Аспирант
Отправить личное сообщение для Neznayka Посмотреть профиль Найти все сообщения от Neznayka
 
Регистрация: 08.03.2013
Сообщений: 37

Сообщение от danik.js Посмотреть сообщение
Во-вторых, судя по всему jQuery не обеспечивает кроссбраузерный вариант запроса.
Чего-то я сомневаюсь в этом. Изначально jQuery реализован на идее, делать все кроссбраузерно. Мне кажется, что просто какой-то детали нехватает (параметр, еще что-то), чтобы он заработал. А вот какой именно, это конечно вопрос.
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2013, 14:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Neznayka
Изначально jQuery реализован на идее, делать все кроссбраузерно.
В данном случае полная кроссбраузерность невозможна. Думаю именно поэтому разработчики отказались делать с этим что-либо вообще.
Вот дискуссия по данному багу http://bugs.jquery.com/ticket/8283
Вот плагин: https://github.com/jaubourg/ajaxHook...ter/src/xdr.js
Вот статья об ограничениях XDomainRequest: http://blogs.msdn.com/b/ieinternals/...rkarounds.aspx
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2013, 14:42
Аспирант
Отправить личное сообщение для Neznayka Посмотреть профиль Найти все сообщения от Neznayka
 
Регистрация: 08.03.2013
Сообщений: 37

Сообщение от danik.js Посмотреть сообщение
Вот дискуссия по данному багу http://bugs.jquery.com/ticket/8283
Вот плагин: https://github.com/jaubourg/ajaxHook...ter/src/xdr.js
Вот статья об ограничениях XDomainRequest: http://blogs.msdn.com/b/ieinternals/...rkarounds.aspx
Огромное спасибо! Даже и не мог подумать, что вот так обстоят дела в jquery с кроссдоменным и кроссбраузерным ajax. Раньше на чистом javascripte все это успешно делал, пересел на jquery - который вроде как кроссбраузерный и такая засада.. Еще раз спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код работает корректно во всех браузерах кроме IE8 Yamasa Events/DOM/Window 6 18.01.2011 07:40
jQuery не работает ни в IE8 ни в Firefox Jon Events/DOM/Window 7 09.01.2010 23:39
Не работает простой show-hide под IE7 varlo jQuery 1 16.12.2009 17:18
Почему скрипт работает в IE6 и не работает в opera и IE8? msufx Javascript под браузер 6 18.09.2009 18:44
Скрипт меню работает только под IE7 и выше TAILER Internet Explorer 1 31.08.2009 13:21