Вход

Просмотр полной версии : Не срабатывает Ajax.Request в IE8


Ruark
11.09.2009, 18:28
есть код:

<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
Версия библиотеки соответствующая? Смотрим тут (http://www.prototypejs.org/2009/3/27/prototype-1-6-1-rc2-ie8-compatibility-element-storage-and-bug-fixes)

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
Мб, проблема в этом (http://blogs.msdn.com/jscript/archive/2009/06/23/serializing-the-value-of-empty-dom-elements-using-native-json-in-ie8.aspx). Поковыряйте код библиотеки, посмотрите, где именно в ИЕ8 вывалиевается. Если именно там -- поищите на https://prototype.lighthouseapp.com/projects/8886/tickets/, не поправлено ли это. Если нет -- переделайте.