Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Не распознается русский при использовании Ajax (https://forum.antichat.xyz/showthread.php?t=36554)

GHostly_FOX 28.03.2007 09:14

Не распознается русский при использовании Ajax
 
У меня такая трабла:
Я тока начал изучать технологию 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>


DIAgen 28.03.2007 12:18

Почитай вот тут http://dklab.ru/lib/JsHttpRequest/
и разбери класс для работы с AJAX, и тогда ты найдешь ответ на свой вопрос.

SMiX 28.03.2007 18:30

req.setRequestHeader('Accept-Charset', 'windows-1251'); Должно помочь

Helios 28.03.2007 20:20

Цитата:

req.setRequestHeader('Accept-Charset', 'windows-1251'); Должно помочь
Все так, но, судя по его посту, нужна кодировка UTF-8, а не cp1251, поэтому:

Код:

req.setRequestHeader('Accept-Charset', 'utf-8');

Dmitriy_ua 16.04.2007 11:01

подскажыте куда ставить этот заголовок
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 ";  } ?>


hidden 16.04.2007 11:21

У тебя php скрипт и html страница с Ajax в одной и той-же кодировке? И она указана в заголовке?

Dmitriy_ua 16.04.2007 13:26

да :(
бывает такой глюк что на локалке работает через раз
на EasyPHP.
проблема точно в передаче, так как если переменные уже в пхп то русские возвращает нормально и спростой формы тоже, абракадабра только спомощю аякс запроса :( и в Опере, IE пашет нормально

Helios 16.04.2007 23:19

Кстати, бока с Utf в опере и я заметил, особенно при отправке запроса на сервер.
Чето там у них не это....

Dmitriy_ua 16.04.2007 23:25

даже е107 (e107_7.8_21-02-2007) с хвалёным плагтном для русского (ajax_chatbox_cp1251) не пашет :(

Dmitriy_ua 16.04.2007 23:48

да много написано про кадировки например здесь http://jsgt.org/mt/archives/01/000701.html (смотреть в опере, иначе не поймёте смысла )


Время: 21:12