Дано: jquery 1.3.2 (вполне возможно как и младшие так и старшие версии)
Решение:
Фишка не в самом jquery, а в излюбленным всеми IE. Не впервой ругаюсь, все тестыф под мозиллой и в самый последний момент под ИЕ, и как результат сплошные неожиданности ...
есть кусок:
$.ajax({
type: "POST",
url: "/index.php",
data: dataString,
cache: false,
dataType: "text",
error: function(msg, textStatus, errorThrown)
{
alert("Error: " + msg +"\r\nStatus: " + textStatus);
},
success: function(msg, status)
{
alert("MSG: "+msg);
}
});
По части url: "/index.php"
содержание index.php:
header("Content-Type: text/html");
print "True";
exit;
Опера, мозила, софари, хром съели на ура, результат всплывающее окно с текстом True ...
IE полон неожиданностей с визгом закричал "Error: Status:parseerror"
пляски с типом (dataType) ни к чему не приводили, снифером (вирешарком) то же всё чисто ... к примеру для типа json => ['True']
Чего не хватало?!
всё проще оказалось ... пишем по части url: "/index.php"
header("Content-Type: text/html; charset=utf-8");
print "True";
exit;
вуаля.
еще один момент не в пользу ИЕ:
.img
<style>
{
background-image:url(images.gif);
background-repeat:no-repeat;
padding-left:20px;
}
</style>
<span class='img'></span>
Опера, мозила, софари, хром: видим то что и ожидаем
IE: видим то что и ожидаем от IE, а собственно НИЧЕГО
костыль или нет, не знаю, честно копать некогда ... но работает
<span class='img'> </span>
вполне возможно что, сработает как
<style>
{
background-image:url(images.gif);
background-repeat:no-repeat;
padding-left:20px;
width: 20px;
}
</style>
А что значит по части url?
ОтветитьУдалитьНа стороне сервера?
по части url это скрипт который будет обрабатывать Ваш запрос, иными словами, да, Вы правы, на стороне сервера сценарий реагирующий на запрос.
ОтветитьУдалитьк примеру:
$.ajax({
type: "POST",
url: "index.php",
data: dataString,
cache: false,
dataType: "text",
error: function(msg, textStatus, errorThrown)
{
alert("Error: " + msg +"\r\nStatus: " + textStatus);
},
success: function(msg, status)
{
alert("MSG: "+msg);
}
});
тут url будет index.php, в нем и пишем наш хедер:
header("Content-Type: text/html; charset=utf-8");
print "True"; exit; /*эту строку естественно после отладки сносим*/
подправил заметку
ОтветитьУдалитьЧерт.
ОтветитьУдалитьНе заметил лишнюю запятую в конце JSONа, в обработчике:
{"ERR":"1","MSG":"Ошибка!","RELOAD":"1",}
Чуть голову не сломал. У меня форма подгружалась методом .load в контейнер dialog из фреймворка jquery ui.
При чем все браузеры отрабатывают как надо. А вот осел выдает parseerror. Но ругаться на него в моем случае глупо.
Ну а header("Content-Type: text/html; charset=utf-8"); нужно всегда указывать.