Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > AJAX проблема с кодировкой русских симво


Автор: americanets 24.7.2007, 17:41

делаю так: 

Код

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<script language="javascript" type="text/javascript">
var request = false;
   try {
     request = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         request = false;
       }  
     }
   }

   if (!request)
     alert("Error initializing XMLHttpRequest!");

 function getCustomerInfo() {
     var phone = document.getElementById("phone").value;
     var url = "test.php?adr=" + escape(phone);
     request.open("GET", url, true);
     request.onreadystatechange = updatePage;
     request.send(null);
   }

 function updatePage() {
     if (request.readyState == 4) {
       if (request.status == 200) {
         var response = request.responseText.split("|");
         document.getElementById("otvet2").innerHTML = response[0];
         document.getElementById("address").innerHTML =
           response[1].replace(/\n/g, "<br />");
       } else if (request.status == 404) {
         alert ("Requested URL is not found.");
       } else if (request.status == 403) {
         alert("Access denied.");
       } else
         alert("status is " + request.status);
     }
   }
</script>


<p>номер:<input type="text" size="14" name="phone" id="phone" onChange="getCustomerInfo();"></p>
<p>ответ 1 :</p>
<div id="address"></div>
<p>ответ 2:</p>
<div id="otvet2"></div>
</body>
</html>





в test.php



Код

<?php
echo ''.$_GET['adr'].' AJAX|<font color="#FF0000"><strong>PROBA</strong></font>';
?>


при вводе русских букв получаю вот такую тарабарщину %u044B , и реально ли сделать с помощью Ajax чтоб не в div подставлялись значения , а менять сам код html, создавать таблицы и тому подобное без перезагрузки страницы

Автор: mishaSL 24.7.2007, 18:06
По поводу кодировки посмотрите следующие ссылки:
http://forum.vingrad.ru/index.php?showtopic=136746&view=findpost&p=1038055
http://forum.vingrad.ru/index.php?showtopic=161337&view=findpost&p=1181309

Этот вопрос уже поднимался неоднократно.


Цитата(americanets @  24.7.2007,  17:41 Найти цитируемый пост)
реально ли сделать с помощью Ajax чтоб не в div подставлялись значения , а менять сам код html, создавать таблицы и тому подобное без перезагрузки страницы 

Реально. Самый простой вариант в этот самый div и кладите ваш HTML код.

Автор: americanets 24.7.2007, 19:07
вобщем то решил так 

Код

<?php
$agent=getenv("HTTP_USER_AGENT");
if(strlen($agent)>2&&!strstr($agent,'MSIE'))
{
echo '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">';
}
else //для IE
{
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
}
echo ''.$_GET['adr'].' AJAX|<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr> 
    <td>'.($_GET['adr']*4).'</td>
    <td>'.($_GET['adr']*8).'</td>
    <td>'.($_GET['adr']*16).'</td>
  </tr>
  <tr>
    <td>'.($_GET['adr']*32).'</td>
    <td>&nbsp;</td>
    <td>'.($_GET['adr']*64).'</td>
  </tr>
  <tr>
    <td>'.($_GET['adr']*128).'</td>
    <td>'.($_GET['adr']*256).'</td>
    <td>'.($_GET['adr']*512).'</td>
  </tr>
</table>';
?>

var url = "test.php?adr=" + phone;


убрал escape а то забыл про него, таблица делается, но не совсем то нужно чтоб страницу можно было сохранить 

Автор: Golda 25.7.2007, 06:58
americanets, AJAX просто позволяет Вам, не перегружая страницу, получить новые данные. Вы получаете все, что выводите скриптом, к которому обращаетесь AJAX-ом, в  request.responseText. А дальше вольны делать все, что позволяет javascript. У Вас полный контроль над DOM. Можете создавать элементы, удалять, менять их содержимое. Не рассматривайте вывод своего скрипта как то, что появится на странице. Рассматривайте его как новые данные, которые можно распарсить в javascript и дальше использовать средствами javascript для любых изменений страницы.

Поэтому, например, не нужно заботиться о Content-type заголовке. Этот заголовок нужен, чтобы клиент разобрался, какой тип данных ему передают, как его интерпритировать и отображать. Но в данном случае клиент - это не броузер, а Ваш javascript. А он знает, какие данные ожидает получить и что с ними дальше делать

Автор: americanets 25.7.2007, 16:33
понятно, проблему решил, перехожуна utf-8 полностью чтоб в дальнейшем проблем не было 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)