Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: кодировка в ajax
 
 автор: parczynski   (30.11.2007 в 19:38)   письмо автору
 
 

Всем привет, вообщем проблема в следущем:
на странице есть 2 выпадающих списка и при изменении значения в одном списке через ajax подгружаются соответствующие значения для другого списка. замена элементов 2-го списка выглядет примерно так:

document.getElementById('citys').innerHTML=http_request.responseText;

http_request - это экземпляр XMLHttpRequest.
все работает нормально, но если в тегах <option> английские буквы или цифры. Но у меня там должны быть наши русские слова, а они отображаются вот так:

&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;

что с этим делатЬ?

   
 
 автор: Port_Artur1   (30.11.2007 в 21:50)   письмо автору
 
   для: parczynski   (30.11.2007 в 19:38)
 

а уменя такая же проблема - только ромбы ромбы

   
 
 автор: Port_Artur1   (30.11.2007 в 22:24)   письмо автору
 
   для: Port_Artur1   (30.11.2007 в 21:50)
 


     автор: coloboc66   (11.11.2007 в 22:00)   письмо автору     
     
Всё делайте в UTF-8. И не нужно ничего перекодировать.


или

     автор: Саня   (07.11.2007 в 10:13)   письмо автору     
     
Вам нужно этот текст закодировать функцией encodeURIComponent().


с первым работает - всё нормально

Но всё таки!!!!!!!!!!!!!!1

вопрос как encodeURIComponent()-дить в вызываемом файле такое:

echo("
        <tr>
          <td width=\"25\" height=\"25\" valign=\"top\" class=\"condition\"><input type=\"checkbox\" name=\"zx_$zo_n[$t]\" value=\"YES\"></td>
          <td width=\"242\" valign=\"top\" class=\"condition\"><a href=\"http://www.$d.$zo_n[$t]\" >$en.$zo_n[$t]</a></td>
          <td width=\"122\" valign=\"top\" class=\"condition\"><a href=”#$check” onclick=\"myFunc ('$check'); return false\">Привет</a></td>
        </tr>
          ");
        $check++;} 
        }


вот так не катит

echo( encodeURIComponent("<tr>
          <td width=\"25\"...........

   
 
 автор: bronenos   (30.11.2007 в 23:46)   письмо автору
 
   для: Port_Artur1   (30.11.2007 в 22:24)
 

это функция js, а не php

   
 
 автор: Port_Artur1   (01.12.2007 в 10:46)   письмо автору
 
   для: bronenos   (30.11.2007 в 23:46)
 

Прочитал сатью но не пойму как её применить к моему примеру
http://xhtml.ru/2006/05/25/encodestring/
Подскажите. Ввызываемом файле у меня нет JS? Да он там в принципе и не нужен,хотя если надо в вданном примере то обязательно добавлю, тогда как воспользоваться этой статьёй на моём примере хочу чтобы всё было в 1251 а не в UTF-8

Не я один такой судя по многочисленным темам данного форума - нужен совет!

   
 
 автор: Port_Artur1   (01.12.2007 в 10:57)   письмо автору
 
   для: Port_Artur1   (01.12.2007 в 10:46)
 

1)Нужно ковертировать строку следующим образом:
$string="Люди размножаются трением.";
$string=iconv("utf-8","windows-1251",$string); //перевели из utf в windows или можно наоборот

вопрос если вызываемый файл в 1251
это надо делать в нём или уже в файле котый вызывает его!

   
 
 автор: coloboc66   (01.12.2007 в 13:01)   письмо автору
 
   для: Port_Artur1   (01.12.2007 в 10:57)
 

В нём.

   
 
 автор: parczynski   (01.12.2007 в 18:49)   письмо автору
 
   для: coloboc66   (01.12.2007 в 13:01)
 

encodeURIComponent() возвращает то же самое, функции iconv() в php у меня вообще нет, и выводятся у меня тоже ромбики со знаками вопроса, просто в посте вместо них из код.

   
 
 автор: parczynski   (01.12.2007 в 18:54)   письмо автору
 
   для: parczynski   (30.11.2007 в 19:38)
 

И еще такая беда (не совсем в тему, но новую из-за этого создавать не хочется)
у меня по всей видимости кэшуруются ответы на запросы аякс. то есть если я делаю запрос к файлу ajax.php, затем изменяю файл ajax.php и повторяю запрос, то выводится результат предыдущего запроса. приходится оперу перезагружать :(

   
 
 автор: bronenos   (01.12.2007 в 19:23)   письмо автору
 
   для: parczynski   (01.12.2007 в 18:54)
 

добавьте в запрос в гет параметр
"&"+Math.round(Math.rand() * 1000)

если нет iconv попробуйте mb_convert_encoding, параметры ровно в обратной последовательности

   
 
 автор: parczynski   (01.12.2007 в 20:02)   письмо автору
 
   для: bronenos   (01.12.2007 в 19:23)
 

mb_convert_encoding тоже нет :(
пробовал

<?php echo convert_cyr_string("<option value=\"1\">Привет","w","k"?>

но результат тот же - ромбики. может все таки в javascipt что-то не так. привожу скрипт:

function makeRequest(url) {
    var http_request = false;
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/html');
        }
    } 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('Невозможно создать экземпляр класса XMLHTTP');
        return false;
    }
    http_request.onreadystatechange = function() { alertContents(http_request); };
    http_request.open('GET',"text.php?"+Math.round(1000), true);
    http_request.send(null);
}

function alertContents(http_request) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            document.getElementById('citys').innerHTML=http_request.responseText;
        } else {
            alert('С запросом возникла проблема.');
        }
    }
}

текст text.php приведен выше
И еще если использовать не innerHTML а innerTEXT, то отображаются русские буквы, но это естественно не подходит

   
 
 автор: coloboc66   (01.12.2007 в 21:56)   письмо автору
 
   для: parczynski   (01.12.2007 в 20:02)
 

В серверном скрипте нужно запрещать кэширование. А если у вас вместо текста выводятся "ромбики", значит, не совпадают кодировки на сервере и в браузере. Потому и твердят вам сотню раз: "Если вы не чуствуете себя с аяксом на Ты, работайте в UTF-8".
Мля - вот эта тема о проблеме кодировок в аяксе на форуме уже раз 100 проходила, так нет же: каждый, кто за аякс не ухватится, начинает её опять поднимать. Поучите теорию сначала, а потом беритесь.

   
 
 автор: parczynski   (01.12.2007 в 23:28)   письмо автору
 
   для: coloboc66   (01.12.2007 в 21:56)
 

1 А зачем вообще нужны подобные форумы, если бы все были бы знакомы с технологиями WEB на ТЫ???
2 В тех материалах об аякс которыми пользовался я не было ничего про подобные проблемы
3 Вообще русский текст передается нормально, проблемы появляются когда я вставляю его в innerHTML.

   
 
 автор: parczynski   (01.12.2007 в 23:37)   письмо автору
 
   для: coloboc66   (01.12.2007 в 21:56)
 

и кстати если в опере поставить кодировку UTF-8, то эта надпись все равно отображается как ромбики, и остальной текст тогда тоже

   
 
 автор: parczynski   (01.12.2007 в 23:42)   письмо автору
 
   для: parczynski   (01.12.2007 в 23:37)
 

в яваскрипт исправил

http_request.overrideMimeType('text/html; charset=windows-1251');

в text.php теперь

<?php 
    header
("Content-Type: text/html; charset=windows-1251");
    echo 
"<option value=\"1\">праfивет";
?>

все работает

   
 
 автор: coloboc66   (02.12.2007 в 21:51)   письмо автору
 
   для: parczynski   (01.12.2007 в 23:42)
 

Слава Богу!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования