venoel
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. Внимательно и с интересом прочитал эту ветку, но ответа на интересующий меня вопрос не нашел. Два дня ломал голову, удача пришла под конец рабочего дня. Вот здесь писали, что дл IE скрипт вызванный с помощью XMLHttpRequest() должен данные возвращать в кодировке UTF-8. Долго я бился но у меня получилось... наоборот. Задача следующая. Юзер вводит код - надо рядом показать наименование(в кириллице), соотвествущее этому коду. Версия Oper'a - 9.21, версия IE 6.0.2900.2180.xpsp_sp2_gdr.070227-2254. Win XP SP2. Apache 2.0.54. код javascript Код: function getXMLHttp(){ // Ну в общем стандартно... var XMLHttp=null; if (window.XMLHttpRequest) { try { XMLHttp=new XMLHttpRequest(); } catch (e) {} } else { if (window.ActiveXObject){ try { XMLHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } return XMLHttp; } function getStancName(){ lookupname = ''; var XMLHttp = getXMLHttp(); XMLHttp.open('get','lookupbyajax.php?lu_stank='+document.getElementsByName('stank')[0].value+'&tand='+Math.random()); // При раскоментированой этой строке в IE выдает ошибку номер "минус xxxxxxxxxxx" // XMLHttp.setRequestHeader("Content-type","content='text/plain; charset=UTF-8'"); XMLHttp.onreadystatechange = function(){ if (XMLHttp.readyState == 4){ document.getElementById('lu_stancname').innerHTML=XMLHttp.responseText; } } XMLHttp.send(null); } | Код PHP lookupbyajax.php Код: <?php // Когда это раскоментировано - то в Oper'a работает. В IE - нет. //header("Content-type: content='text/plain; charset=UTF-8'"); // Если не отдавать заголовок для Oper'a, тогда она бред показывает. if (!eregi("MSIE",$_SERVER["HTTP_USER_AGENT"])) // Опера или Mozilla Firefox, но по крайней мере не Microsoft Internet Explorer header("Content-type: content='text/plain; charset=WINDOWS-1251'"); include_once("const.inc.php"); ob_start(); $connection=connect(); // См. const.inc.php $IBT1=ibase_trans(...); $SQLStancName="select station ........"; if (isset($_GET["lu_stank"])){ $res=ibase_query($IBT1,$SQLStancName,$_GET["lu_stank"]); $Fields=ibase_fetch_assoc($res); echo $Fields["LOOKUPNAME"]; } ibase_commit($IBT1); $data=ob_get_contents(); ob_end_clean(); // Даже при раскоментированой этой строке - в IE не работало. // mb_convert_variables("UTF-8","CP-1251",$data); echo $data; ?> | Код полностью рабочий. Может кому-то поможет. | Всего записей: 16 | Зарегистр. 09-01-2004 | Отправлено: 16:18 02-07-2007 | Исправлено: venoel, 16:20 02-07-2007 |
|