Javascript-форум (https://javascript.ru/forum/)
-   Prototype & script.aculo.us (https://javascript.ru/forum/prototype-script-aculo-us/)
-   -   Не срабатывает Ajax.Request в IE8 (https://javascript.ru/forum/prototype-script-aculo-us/5058-ne-srabatyvaet-ajax-request-v-ie8.html)

Ruark 11.09.2009 18:28

Не срабатывает Ajax.Request в IE8
 
есть код:

<script>
  window.onload=function() 
  {
   var aform=$('authform2');
   Event.observe(aform, 'submit', ALogon);
  }
 </script>

<form method="post" action="/?action=auth" id="authform2" name="authform">
......
</form>


function ALogon()
 {
  $('subbutton').style.display='none';
  new Ajax.Request
  (
   "/include/ajax/login.php",
   {
    method: 'post',
    parameters: $('authform').serialize(true),
    onSuccess: function(xhr)
               {
                var result=xhr.responseXML;
                AuthSite(result);
               }

   }
  );
  $('subbutton').style.display='';
  return false;
 }


отлично работает в ИЕ6, ИЕ7, в ИЕ8 не работает.
Покопавшись, я определил, что затык не в onLoad. Проблема начинается со строчки new Ajax.Request
То есть получается что не срабатывает объект библиотеки prototype? И именно в ИЕ8. Кто подобное видел?

e1f 11.09.2009 18:46

Версия библиотеки соответствующая? Смотрим тут

Ruark 12.09.2009 13:07

стянул оттуда. не работает:-(

Ruark 14.09.2009 10:42

Библиотека 1.6.1 пробовал и 1.6.1.rc2 и 1.6.1.rc3. Эффект тот же.
ошибка на new.Ajax.Request 'null есть null или не является объектом'
пока вылечил тем что узел в настройках ИЕ8 добавил в режим совместимости. Но это ведь не метод....
Кто знает как побороть?

e1f 14.09.2009 14:54

1. Выложите Вашу тестовую страницу с локализованной проблемой, которая не работает.
2. Зайтите на оффсайт prototype, возьмите их тестовые примеры/демо и запустите в ИЕ8. Работают?

Ruark 14.09.2009 15:56

уточняю проблему.
выяснил тот случай, в котором Ajax.Request не работает - при использовании метода serialize

Вот этот код не работает:
new Ajax.Request
  (
   "/include/ajax/login.php",
   {
    method: 'post',
    parameters: $('authform').serialize(true),
    onSuccess: function(xhr)
               {
                
               }

   }
  );

а с этим все нормально:

username=$('$_login').value;
  passw=$('$_passw').value;
  var pars = $H({username:username, passw:passw}).toQueryString();
  new Ajax.Request
  (
   "/include/ajax/login.php",
   {
    method: 'post',
    parameters: pars,
    onSuccess: function(xhr)
               {
               
               }

   }
  );


Но ведь можно задолбаться все параметры перечислять... Версия прототайпа 1.6.1

e1f 14.09.2009 18:31

Мб, проблема в этом. Поковыряйте код библиотеки, посмотрите, где именно в ИЕ8 вывалиевается. Если именно там -- поищите на https://prototype.lighthouseapp.com/.../8886/tickets/, не поправлено ли это. Если нет -- переделайте.


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