Перейти к содержимому

Реферальная программа Мегаплана

Выбрать шаблон и создать сайт

  • Закрытая тема Тема закрыта

Кодировка ResponseText для Ajax

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 05 Апрель 2010 - 18:31

Всем привет!

Помогите победить кодировку в тексте ответа.
Все как обычно для Ajax - скрипту посылаються данные и принимаеться ответ, и проблема именно с ответом, т.к данные приходят в нормальной кодировке (utf-8), а вот в блок в котором выводиться ответ, выгружаються крякозяблики

п»ї
Спасибо Fds Fsdfsd Р·Р° РІР°С?Рµ сообщение

На указанный вами Email отправлена копия этого сообщения.


Помогите это вылечить :rolleyes: ниче не пойму, оба файла в utf-8.

это функция отправки Ajax (Mootools)

function Request(str){
			var url = "/modules/mod_mail/mailer.php?"+str;
			new Ajax(url, {
				method: 'post',
				onRequest: function(){
					$('mail').setStyles({display: 'none'});
					$('on-request').setStyles({display: 'block'});
				},
				onSuccess: function(responseText){
					$('on-request').setStyles({display: 'none'});
					$('on-sucess').setStyles({display: 'block'}).setHTML('<h2>'+responseText+'</h2>');
					(function(){
						$('on-sucess').setStyles({display: 'none'})
						wrapper.setStyles({height: 0, display: 'none'});
						panel.setStyles({top: -baseheight});
						$('mail').setStyles({display: 'block'});
						Clear();
					}).delay(6000);
				},
				onFailure: function(){
					$('on-request').setStyles({background: 'none'}).setHTML('<h2>Ошибка передачи данных</h2><br/><p>Попробуйте отправить сообщение еще, или позже...</p>');
					(function(){
						wrapper.setStyles({height: 0, display: 'none'});
						panel.setStyles({top: -baseheight});
						$('on-request').setStyles({display: 'none'});
						$('mail').setStyles({display: 'block'});
						Clear();
					}).delay(3000);
				},
				onComplete: function(){
/*					(function(){
						wrapper.setStyles({height: 0, display: 'none'});
						panel.setStyles({top: -baseheight});
						$('mail').setStyles({display: 'block'});
						Clear();
					}).delay(3000);*/
				}
			}).request();
	}

А это серверный скрипт который отправляет данные на почту

<?php
header('Content-Type: text/plain; charset=utf-8');
if(isset($_GET['recipient'])){$recipient = $_GET['recipient']; if($recipient == ''){unset($recipient);}}
if(isset($_GET['subject'])){$subject = $_GET['subject']; if($subject == ''){unset($subject);}}
if(isset($_GET['surname'])){$surname = $_GET['surname']; if($surname == ''){unset($surname);}}
if(isset($_GET['midellname'])){$midellname = $_GET['midellname']; if($midellname == ''){unset($midellname);}}
if(isset($_GET['name'])){$name = $_GET['name']; if($name == ''){unset($name);} }
if(isset($_GET['email'])){$email = $_GET['email']; if($email == ''){unset($email);} }
if(isset($_GET['phone'])){$phone = $_GET['phone']; if($phone == ''){unset($phone);} }
if(isset($_GET['sendcopy'])){$sendcopy = $_GET['sendcopy']; if($sendcopy == ''){unset($sendcopy);} }
if(isset($_GET['comment'])){$comment = $_GET['comment']; if($comment == ''){unset($comment);} }

if(isset($subject) && isset($surname) && isset($midellname) && isset($name) && isset($email) && isset($phone) && isset($sendcopy) && isset($comment)){

//$recipient = "admin@server.com";
$from = trim(addSlashes($email));
$subject = trim(addSlashes($subject));
$surname = ucwords(trim(addSlashes($surname)));
$name = ucwords(trim(addSlashes($name)));
$midellname = ucwords(trim(addSlashes($midellname)));
$comment = trim($comment);


$headers = "From: $surname $name <$from>\r\n";
$headers .= "Reply-to:$from\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "To: nukk.ru <$recipient>\r\n";
$body = "Контактное лицо: \r\n".
"Фамилия: ".$surname."\r\n".
"Имя: ".$name."\r\n".
"Отчество: ".$midellname."\r\n".
"Email: ".$from."\r\n".
"Телефон: ".$phone."\r\n".
"Текст сообщения:\r\n".$comment;
$formsent = mail($recipient, $subject, $body, $headers);

if($sendcopy == 'true'){
$recipient = trim(addSlashes($email));
sleep(1);
$copysend = mail($recipient, $subject, $body, $headers);
}

if($formsent){$data = "Спасибо ".$name." ".$surname ." за ваше сообщение";}else{$data = "Ошибка отправки почтового сообщения";}
if($formsent){$data = "<h2>Спасибо ".$name." ".$surname ." за ваше сообщение</h2><p>На указанный вами Email отправлена копия этого сообщения.</p>";}else{$data = "Ошибка отправки почтового сообщения";}

echo $data;

}else{echo "Недостаточно данных";}
?>


Увидеть этот глюк можно здесь - Кнопка вверху "Обратная связь"

Спасибо.
P.S iconv() не работает на хостинге...

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Апрель 2010 - 18:50

Вячеслав, основная страница в какой кодировке?
И файл с функцией отправки Ajax-запроса(mootools).
Наверное в этом соль, та же проблема была. Надо сделать перекодировку файлов.
  • 0

#3 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 05 Апрель 2010 - 19:05

Это модуль для Joomla1.5 все файлы перекодировал с помощю вот этого зверька - Notepad++

Но нифига не помогло.
  • 0

#4 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 357 сообщений
  • Репутация: 0

Отправлено 05 Апрель 2010 - 20:22

Проблема решена, спасибо ZiToss в который раз выручил!!!
Все дело было в кодировке файлов, и я неверно перекодировывал их с помощю Notepad++.

Нужно не перекодировывать в UTF-8 а "Преобразовывать в UTF-8".

В Notepad++ открываете файл > Кодировки > Преобразовать в UTF-8.

Спасибо!
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Апрель 2010 - 20:25

Вячеслав, всегда пожалуйста :rolleyes:
Тему закрываю.
  • 0


Оформление форума – IPBSkins.ru