У меня такая трабла: Я тока начал изучать технологию AJAX написал небольшой скрипт который передается моему PHP файлу параметры и затем показывает результат, но тут одно проблема, после вывода на экран результатов весь русский текст становится вопросами, я решил проверить, создал отдельный РНР скрипт который просто бы считывал данные сам с себя и сохранил его в UTF-8 (Благо EditPlus 2 позволяет это сделать), так после проверки кода все начало работать... Как мне быть?! простое перекодирование текста в UTF-8 командой utf8_encoding непомогает, ниже приведен код скрипта: PHP: <span id="email_label"> <script> function createRequestObject() { var ro; if (navigator.appName == "Microsoft Internet Explorer") { ro = new ActiveXObject("Microsoft.XMLHTTP"); } else { ro = new XMLHttpRequest(); } return ro; } var http = createRequestObject(); function sendRequest(email) { http.open('get', 'index.php?email=' + encodeURIComponent(email)); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if (http.readyState == 4) { document.getElementById('email_label').innerHTML = http.responseText; } } alert(http.responseText); </script> <?php error_reporting(0); print "AYAX + PHP + ORACLE\n<br>"; if (isset($_GET['email'])){ $mail = $_GET['email']; } if (isset($mail)) { echo 'Скрипт работает! Email address has already been registered!'; } else { echo 'Email address is available!'; } ?> <form action="index.php" method="post"> Email Address: <input name="email" type="text" size="30" maxlength="60" onchange="sendRequest(this.form.email.value)" /> <br /> First Name: <input name="first_name" type="text" size="20" maxlength="20" /><br /> (Rest of the form...) </form> </span>
Почитай вот тут http://dklab.ru/lib/JsHttpRequest/ и разбери класс для работы с AJAX, и тогда ты найдешь ответ на свой вопрос.
Все так, но, судя по его посту, нужна кодировка UTF-8, а не cp1251, поэтому: Code: req.setRequestHeader('Accept-Charset', 'utf-8');
подскажыте куда ставить этот заголовок req.setRequestHeader('Accept-Charset', 'utf-8'); если ставлю перед xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null); или после не пашет ява-скрипт, проблема вроде тажа в Опере. РџСЂРёРІРµС заместо русских букв в Эксплорере всё ок. index.php PHP: <html> <head> <META content="text/html; charset=windows-1251" http-equiv="Content-Type"> <script src="clienthint.js"> </script> </head> <body onload="showHint(\''.htmlSpecialChars($_SESSION['login']).'\')"> <span id="Hint"></span> <div id="txtHint"></div> <form name="Formy"> <input type="text" id="txt1" name="textchat" onkeyUp="if(event.ctrlKey&&event.keyCode==13) Clicky(txt1.value,\''.htmlSpecialChars($_SESSION['login']).'\');"> <input type="reset" value="submit" name="submit" onclick="Clicky(txt1.value,\''.htmlSpecialChars($_SESSION['login']).'\');document.Formy.textchat.focus();"> </form> <form action="off.php" method="get"> <input type="submit" name="exit" value="exit"> </form> <script> document.Formy.textchat.focus(); </script> clienthint.js PHP: function Clicky(comments,name){ xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Your browser does not support AJAX!"); return; } var url="save.php"; url=url+"?comments=" + comments; url=url+"&name=" + name; url=url+"&sid="+Math.random(); xmlHttp.onreadystatechange=stateChan; req.setRequestHeader('Accept-Charset', 'windows-1251'); xmlHttp.open("GET",url,true); xmlHttp.send(null); document.Formy.textchat.value="" ; document.Formy.textchat.focus(); } save.php PHP: <?php foreach ($_REQUEST as $field =>$value){ $$field=$value; print "$field =$value "; } ?>
да бывает такой глюк что на локалке работает через раз на EasyPHP. проблема точно в передаче, так как если переменные уже в пхп то русские возвращает нормально и спростой формы тоже, абракадабра только спомощю аякс запроса и в Опере, IE пашет нормально
Кстати, бока с Utf в опере и я заметил, особенно при отправке запроса на сервер. Чето там у них не это....
да много написано про кадировки например здесь http://jsgt.org/mt/archives/01/000701.html (смотреть в опере, иначе не поймёте смысла )