Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Не распознается русский при использовании Ajax |

28.03.2007, 09:14
|
|
Участник форума
Регистрация: 04.01.2007
Сообщений: 112
Провел на форуме: 179531
Репутация:
48
|
|
Не распознается русский при использовании 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>
|
|
|

28.03.2007, 12:18
|
|
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме: 7364332
Репутация:
1276
|
|
Почитай вот тут http://dklab.ru/lib/JsHttpRequest/
и разбери класс для работы с AJAX, и тогда ты найдешь ответ на свой вопрос.
|
|
|

28.03.2007, 18:30
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
req.setRequestHeader('Accept-Charset', 'windows-1251'); Должно помочь
|
|
|

28.03.2007, 20:20
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
req.setRequestHeader('Accept-Charset', 'windows-1251'); Должно помочь
Все так, но, судя по его посту, нужна кодировка UTF-8, а не cp1251, поэтому:
Код:
req.setRequestHeader('Accept-Charset', 'utf-8');
Последний раз редактировалось Helios; 28.03.2007 в 20:24..
|
|
|

16.04.2007, 11:01
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 40
Провел на форуме: 193056
Репутация:
10
|
|
подскажыте куда ставить этот заголовок
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 "; } ?>
Последний раз редактировалось Dmitriy_ua; 16.04.2007 в 11:20..
|
|
|

16.04.2007, 11:21
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
У тебя php скрипт и html страница с Ajax в одной и той-же кодировке? И она указана в заголовке?
|
|
|

16.04.2007, 13:26
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 40
Провел на форуме: 193056
Репутация:
10
|
|
да 
бывает такой глюк что на локалке работает через раз
на EasyPHP.
проблема точно в передаче, так как если переменные уже в пхп то русские возвращает нормально и спростой формы тоже, абракадабра только спомощю аякс запроса  и в Опере, IE пашет нормально
|
|
|

16.04.2007, 23:19
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Кстати, бока с Utf в опере и я заметил, особенно при отправке запроса на сервер.
Чето там у них не это....
|
|
|

16.04.2007, 23:25
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 40
Провел на форуме: 193056
Репутация:
10
|
|
даже е107 (e107_7.8_21-02-2007) с хвалёным плагтном для русского (ajax_chatbox_cp1251) не пашет 
|
|
|

16.04.2007, 23:48
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 40
Провел на форуме: 193056
Репутация:
10
|
|
да много написано про кадировки например здесь http://jsgt.org/mt/archives/01/000701.html (смотреть в опере, иначе не поймёте смысла )
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|