ajax русские буквы
От: pretorian  
Дата: 26.01.06 11:50
Оценка:
Привет!
Использую ajax для организации живого поиска.
Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
Подскажите как исправить ситуацию.

Заранее спасибо.
Re: ajax русские буквы
От: Kron0S Россия http://www.certifications.ru/publicresults.php?uid=74745
Дата: 27.01.06 05:22
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Привет!

P>Использую ajax для организации живого поиска.
P>Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
P>Подскажите как исправить ситуацию.

P>Заранее спасибо.



ежели у тебя xmlhttprequest:
RESPONSE.setHeader('Content-Type', 'text/html; charset=windows-1251')

а еще можно юзать Subsys_JsHttpRequest, тогда:
$JsHttpRequest =& new Subsys_JsHttpRequest_Php("windows-1251");

А вообще об этом вроде уже говорили
СоН РаЗУмА РожДаеТ ЧуДоВиЩ
Re[2]: ajax русские буквы
От: pretorian  
Дата: 27.01.06 07:20
Оценка:
Здравствуйте, Kron0S, Вы писали:

KS>ежели у тебя xmlhttprequest:

KS>RESPONSE.setHeader('Content-Type', 'text/html; charset=windows-1251')

Не работает в таком.варианте. Вообще перестало выводиться что-либо на экран.
Ещё есть варианты?
Re: ajax русские буквы
От: Arioch2  
Дата: 27.01.06 08:26
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Привет!

P>Использую ajax для организации живого поиска.
P>Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
P>Подскажите как исправить ситуацию.

browser ?
траффик между клиетном и сервером — запрос на описк и ответ какие ?

какого рода ерунда ?
Re[2]: ajax русские буквы
От: pretorian  
Дата: 27.01.06 09:46
Оценка:
Здравствуйте, Arioch2, Вы писали:

A>browser ?

Opera 8.5.1
A>траффик между клиетном и сервером — запрос на описк и ответ какие ?
A>какого рода ерунда ?

На вводе русские буквы, в скрипт на php (в условия запроса) приходят крякозяблы.
С цифрами всё в порядке.
Re[3]: ajax русские буквы
От: Arioch2  
Дата: 27.01.06 09:51
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Здравствуйте, Arioch2, Вы писали:


A>>browser ?

P>Opera 8.5.1
A>>траффик между клиетном и сервером — запрос на описк и ответ какие ?

^^^^^^^^^^^^^^
Ставь Proxomitron, включай Byрass, Опере ставь его как проксю, открывай Log window — и смотри что отправляется и что возвращается.

Выяснять в первую очередь надо что происходит — тогда понятнее будет что делать, а не шаманить

A>>какого рода ерунда ?


P>На вводе русские буквы, в скрипт на php (в условия запроса) приходят крякозяблы.


Они разные бывают. Иногда по виду кракозябр можно сказать, какие преобразования кодировок прошли.
Re[3]: ajax русские буквы
От: Kron0S Россия http://www.certifications.ru/publicresults.php?uid=74745
Дата: 27.01.06 18:41
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Здравствуйте, Kron0S, Вы писали:


KS>>ежели у тебя xmlhttprequest:

KS>>RESPONSE.setHeader('Content-Type', 'text/html; charset=windows-1251')

P>Не работает в таком.варианте. Вообще перестало выводиться что-либо на экран.

P>Ещё есть варианты?

код в студию
СоН РаЗУмА РожДаеТ ЧуДоВиЩ
Re[4]: ajax русские буквы
От: ddocker Россия www.codelab.ru
Дата: 27.01.06 20:20
Оценка:
A>Ставь Proxomitron, включай Byрass, Опере ставь его как проксю, открывай Log window — и смотри что отправляется и что возвращается.

Как это сделать? Вот запустил ты Proxomitron, в опере открыл настройки-сеть, там поле: HTTP: <поля для ввода(ip/хоста подоздеваю)> Порт: <поле>
Что вводить, как настраивать сам Proxomitron?
Re[5]: ajax русские буквы
От: ddocker Россия www.codelab.ru
Дата: 27.01.06 20:27
Оценка:
Все, разобрался:
HTTP: localhost Порт: 8080

Порт — задается в настройках проги.
Re[4]: ajax русские буквы
От: pretorian  
Дата: 31.01.06 10:24
Оценка:
Здравствуйте, Kron0S, Вы писали:
KS>код в студию

<html>
<head>

</head>
<script type="text/javascript" language="javascript">
// <![CDATA[

var http_request = false;

function makeRequest(url, snd) {
http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
http_request.setHeader('Content-Type', 'text/html; charset=windows-1251');
//if (http_request.overrideMimeType) {
//http_request.overrideMimeType('text/xml');
//}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
//http_request.setRequestHeader('Content-Type: text/xml; charset=windows-1251');
http_request.onreadystatechange = function(){
    //alertContents
    document.getElementById('z').innerHTML="<h4>Результаты поиска</h4><p>"+http_request.responseText;
};
http_request.open('POST', url, true);
http_request.send(snd);
}

function alertContents() {
if (http_request.readyState == 4) {// COMPLETED
if (http_request.status == 200) {// HTTP STATUS
/*вывод результата*/    
//alert(http_request.responseText);
    //result.value=http_request.responseText;
    document.getElementById('z').innerHTML=http_request.responseText;
} else {
alert('There was a problem with the request.');
}
}
}

// ]]>
</script>
Re: ajax русские буквы
От: Alfred361 Россия  
Дата: 31.01.06 13:27
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Привет!

P>Использую ajax для организации живого поиска.
P>Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
P>Подскажите как исправить ситуацию.

P>Заранее спасибо.


Волшебное слово — юникод.
Отправляться у тебя должно все прекрасно и в PHP приходить все правильно. (Правда, были у меня проблемы с оперой 8-кой, но не помню в чем была суть). Но вот обратно, из PHP, текст должен возвращаться в юникоде. Ты там, в PHP, сложи все, что к выводу готово в переменную, а потом прогони через функцию типа:
function ru2uni($isoline) {
    $uniline="";
    for ($i=0; $i < strlen($isoline); $i++){
        $thischar=substr($isoline,$i,1);
        $charcode=ord($thischar);
        if ($charcode==168) {
            $uniline.="&#".(26*32+57+($charcode)).";";
        } elseif ($charcode==184) {
            $uniline.="&#".(26*32+89+($charcode)).";";
        } elseif (($charcode>=192) and ($charcode<=255)) {
            $uniline.="&#".(26*32+16+($charcode)).";";
        } else {
            $uniline.=$thischar;
        }
    }
    return $uniline;
}

Тут можно небольшим регулярным выражением все описать, но лень сейчас писать, нашел вот готовый код, пользуйся.
Re[2]: ajax русские буквы
От: pretorian  
Дата: 31.01.06 14:00
Оценка:
Здравствуйте, Alfred361, Вы писали:

A>Здравствуйте, pretorian, Вы писали:


P>>Привет!

P>>Использую ajax для организации живого поиска.
P>>Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
P>>Подскажите как исправить ситуацию.

P>>Заранее спасибо.


A>Волшебное слово — юникод.

A>Отправляться у тебя должно все прекрасно и в PHP приходить все правильно. (Правда, были у меня проблемы с оперой 8-кой, но не помню в чем была суть). Но вот обратно, из PHP, текст должен возвращаться в юникоде.


Так у меня выводиться нормально русский текст. Проблема осталась. При вводе русской буквы в php приходит ерунда. Вывел в браузер строку запроса в базу. Там введённый символ в виде ерунды. Изменил кодировку страницы в браузере на utf-8 и запрос отобразился в правильном виде и с русской буквой.
Re[5]: ajax русские буквы
От: Arioch  
Дата: 31.01.06 18:47
Оценка:
On Tue, 31 Jan 2006 13:24:12 +0300, pretorian <3027@users.rsdn.ru> wrote:

> http_request.setHeader('Content-Type', 'text/html;

> charset=windows-1251');

а это зачем ?

ТЫ бы таки привел лог HTTP с жтим изменением заголовка и без него

--
Отправлено M2, революционной почтовой программой Opera:
http://www.opera.com/mail/
Posted via RSDN NNTP Server 2.0
Re[5]: ajax русские буквы
От: Kron0S Россия http://www.certifications.ru/publicresults.php?uid=74745
Дата: 01.02.06 06:51
Оценка:
Здравствуйте, pretorian, Вы писали:

KS>>код в студию


Должно работать:

index.html
<html>
<head>
</head>
<script type="text/javascript" language="javascript">

function getXmlHttpRequestObject() 
{
 if (window.XMLHttpRequest) 
   {
    return new XMLHttpRequest();
   }
  else 
   if(window.ActiveXObject) 
     {
      return new ActiveXObject("Microsoft.XMLHTTP");
     }
    else
     {
      document.getElementById('z').innerHTML='Status: Cound not create XmlHttpRequest Object.';
     }
}

function makeRequest() 
{                           
 url="./php.php";
 snd='par='+document.getElementById('par').value; 
 http_request.open('post', url, true);
 http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 http_request.onreadystatechange = alertContents;    
 http_request.send(snd);
}

function alertContents()
{
 if (http_request.readyState == 4 || http_request.readyState == 0)
  {
   document.getElementById('z').innerHTML=http_request.responseText;
  }
}

var http_request = getXmlHttpRequestObject();
//makeRequest();

</script>     
<body>
<form accept-charset='utf-8'>
<input type=text name=par value='Хеллоу ворлд' />
<input type=submit value='OK' onclick='makeRequest(); return false;'/>
</form>
<div id='z'></div>
</body>
</html>



php.php

<?php
header("Content-Type: text/xml; charset=utf-8");   
$xml = $_POST['par'];
echo $xml;
?>


И проверь какая кодировка у твоего сервера
СоН РаЗУмА РожДаеТ ЧуДоВиЩ
Re: ajax русские буквы
От: Rumata Россия http://atamur.livejournal.com
Дата: 01.02.06 09:14
Оценка:
Здравствуйте, pretorian, Вы писали:

P>Привет!

P>Использую ajax для организации живого поиска.
P>Из формы передаю русский текст, а в скрипт на php приходит ерунда. И из этого следует что поиск не отрабатывает.
P>Подскажите как исправить ситуацию.

P>Заранее спасибо.

Была у меня проблема, когда я пользовался сторонней библиотекой.
При вводе русских букв в пхп приходило что-то странное.
Решилось все заменой js ф-ии, которой упаковывался ввод. По-моему поменял на escape.

Попробуй использовать эту библиотеку: sajax
Других проблем с ней не было.
Re: ajax русские буквы
От: pretorian  
Дата: 03.02.06 11:16
Оценка:
Что больше никаких вариантов нет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.