[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с AJAX, не работает в IE
haZe
Добрый день!
Тут я сильно опечалился, когда обнаружил, что механизм, который выполнял подгруздку информации с сервера, просто не работает в IE, при чем везде работает, кроме любого IE.
Прям не знаю что делать, я в большой печали, поглядите люди пожалуйста, как сие безобразие заставить работать.

Свернутый текст

Код
var req;
var loader;
function loadDoc(url, vars, func, varsf) {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
 req = new XMLHttpRequest();
 if (req.overrideMimeType) {
  req.overrideMimeType('text/xml');
 }
} else if (window.ActiveXObject) { // IE
 try {
  req = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
 try {
  req = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (e) {}
 }
}

 
req.open("POST", url, true);
req.onreadystatechange = processReqChange();
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(vars);
req.params = {func : func, varsf : varsf};

}

function processReqChange(){
   if (req.readyState == 4) {
       if (req.status == 200) {
               window[this.params.func](req.responseText, this.params.varsf);
       } else {
 window[this.params.func]("false<xmltager>Error: " + req.statusText + req.responseText, this.params.varsf);
       }

   }
}





Спустя 3 часа, 54 минуты, 56 секунд (20.10.2009 - 18:26) kirik написал(а):
Код
window[this.params.func](..)

эт че?

Если что, тут класс найдешь rolleyes.gif (скоро новую версию предоставлю)

Спустя 18 минут, 25 секунд (20.10.2009 - 18:44) haZe написал(а):
Цитата
эт че?

Это я выполняю функцию название которой лежит в переменной. Хмм... В ИЕ оно подругому делается чтоли?
Цитата
тут класс найдешь

Класс! Буду юзать теперь, но не сейчас, сейчас уже поздно.

Спустя 46 минут, 38 секунд (20.10.2009 - 19:31) kirik написал(а):
Цитата (haZe @ 20.10.2009 - 10:44)
Это я выполняю функцию название которой лежит в переменной.

Чет странно, мне кажеццо.. А ты не можешь просто определить функцию, и потом вызывать ее, а не сохранять ее в window..?

Спустя 1 час, 24 минуты, 37 секунд (20.10.2009 - 20:56) twin написал(а):
Цитата
Класс! Буду юзать теперь, но не сейчас, сейчас уже поздно.

Зря. Я везде у себя поставил, нарадоваться не могу.
. kirik - гений smile.gif

Спустя 1 минута, 22 секунды (20.10.2009 - 20:57) haZe написал(а):
0_о ты видать не понял...

Код
var func = "foo";

function foo()
{
   alert('foo');
}

window[func]();//будет алерт с foo

Спустя 1 минута, 37 секунд (20.10.2009 - 20:59) haZe написал(а):
Цитата (twin @ 20.10.2009 - 17:56)
Цитата
Класс! Буду юзать теперь, но не сейчас, сейчас уже поздно.

Зря. Я везде у себя поставил, нарадоваться не могу.
. kirik - гений smile.gif

Согласен. Но тогда переделывать много, а сайт скоро сдавать.(((

Спустя 1 минута, 37 секунд (20.10.2009 - 21:00) twin написал(а):
Много? 10 минут максимум. Быстрее чем ты косяк найдешь.

Спустя 22 минуты, 11 секунд (20.10.2009 - 21:22) kirik написал(а):
Цитата (haZe @ 20.10.2009 - 12:57)
0_о ты видать не понял...

Ну дык нафига ее через window вызывать? Просто foo(); и усё, она ведь и так глобальная получается.

twin
Не вгоняй в краску rolleyes.gif

Спустя 1 час, 33 минуты, 26 секунд (20.10.2009 - 22:56) haZe написал(а):
Да дело не в глобальности.
Смотри, у меня есть функция, которая скажем берет со страницы какую-та инфу, как-то ее обрабатывает и скажем выполняет анимацию. После чего она вызывает loadDoc где говорит что и куда надо отправить, а так же какую функцию выполнить после того как сервер ответит. В третий атрибут(func) я кладу название функции, которая выполняется после ответа сервера. И таких пар у меня много.

Спустя 8 минут, 22 секунды (20.10.2009 - 23:04) kirik написал(а):
Цитата (haZe @ 20.10.2009 - 14:56)
В третий атрибут(func) я кладу название функции, которая выполняется после ответа сервера.

А ты просто ссылку на функцию вместо ее названия не можешь что ли передавать?

Спустя 6 минут, 3 секунды (20.10.2009 - 23:10) haZe написал(а):
Нет rolleyes.gif Потому что изучал JS вообще бессистемно и не так хорошо его знаю. В общем про ссылки не знал sad.gif
Ну собсна проблема от незнания.

Спустя 7 минут, 45 секунд (20.10.2009 - 23:18) kirik написал(а):
Так вот.. Замени:
Код
req.onreadystatechange = processReqChange();
// на
req.onreadystatechange = processReqChange(func);
// ------
function processReqChange(){
// на
function processReqChange(func){
// ------

Внутри processReqChange() просто делай func('че надо');, а вызывать так:
Код
var func = function (arg) {
  alert(arg);
}
loadDoc(url, vars, func, varsf);
// -- или --
loadDoc(url, vars, function (arg) {
  alert(arg);
}, varsf);

если не разберешься, пиши smile.gif

Спустя 8 минут, 55 секунд (20.10.2009 - 23:27) haZe написал(а):
kirik, спасибо, учту. Но для того сайта который я сейчас доделываю это наверно подойдет. Потому что больше тысячи строк ЯваСкрипта, а мне уже наверно завтра надо будет слить его на хост, сдать в общем.
Ты мне книжечку можешь посоветовать? Или этого хватит?

Спустя 10 минут, 19 секунд (20.10.2009 - 23:37) kirik написал(а):
Цитата (haZe @ 20.10.2009 - 15:27)
Ты мне книжечку можешь посоветовать? Или этого хватит?

Книжку не подскажу, ибо сам учил (учу) яваскрипт методом проб и ошибок smile.gif То что по ссылке, я думаю должно подойти.

Цитата (haZe @ 20.10.2009 - 15:27)
Потому что больше тысячи строк ЯваСкрипта

ппц.. smile.gif

Спустя 2 минуты, 54 секунды (20.10.2009 - 23:40) haZe написал(а):
Цитата (kirik @ 20.10.2009 - 20:37)
Цитата (haZe @ 20.10.2009 - 15:27)
Потому что больше тысячи строк ЯваСкрипта

ппц.. smile.gif

У меня админка ваще целиком на аяксе.
А сам сайт, практически целиком грузится сразу и подгружается статьи, страницы новостей и обратная связь. В общем все общение с сервером полностью асинхронно)))

Спустя 2 минуты, 4 секунды (20.10.2009 - 23:42) kirik написал(а):
Цитата (haZe @ 20.10.2009 - 15:40)
В общем все общение с сервером полностью асинхронно)))

тобишь без JS этот сайт даже посмотреть нельзя.. smile.gif

Спустя 8 минут, 36 секунд (20.10.2009 - 23:51) haZe написал(а):
Ага! biggrin.gif
Там и навигация на JS со слайдингом.
На самом деле сайт сделал и понял, что до его уровня мне еще расти и расти. Вернее сначала сделал, вроде норм, а потом поперли всякие баги, глюки ну и вследствие всякие фиксы, заплатки, костыли. Я не доволен им.

Спустя 3 минуты, 38 секунд (20.10.2009 - 23:54) kirik написал(а):
Больше всего интересно, как такой сайт будет индекироваться в поисковиках, и будет ли вообще smile.gif
Тут СЕОшник знакомый просил заменить JS меню на обычное CSS, потому что гугл не видел менюшку.

Спустя 26 минут, 32 секунды (21.10.2009 - 00:21) haZe написал(а):
Ну хз. Ваще по сути там есть открыть хтмл код, то всю инфу и так увидеть можно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.