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

HTML+CSS+JavaScript

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

 

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

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

тема: jQuery: не работает метод .post в Internet Explorer
 
 автор: ols   (08.05.2011 в 17:45)   письмо автору
 
 

<script type="text/javascript">
function change_street(val) {
    var id_street = val.value;
    $.post("/blocks/ajax.php", {id_street: ""+id_street+""}, function(data){
         $("#d").html(data);
    });
}
</script>


из-за чего может не работать данная функция в ie? Сама функция вызывается, а вот $.post не работает

  Ответить  
 
 автор: cheops   (08.05.2011 в 18:06)   письмо автору
 
   для: ols   (08.05.2011 в 17:45)
 

1) Какая версия Internet Explorer?
2) Какая версия jQuery?
3) Что такое val, откуда он берется и что дает alert(val.value); для Internet Explorer?

  Ответить  
 
 автор: ols   (08.05.2011 в 18:20)   письмо автору
 
   для: cheops   (08.05.2011 в 18:06)
 

cheops, разобрался. Дело в кодировке.
Скрипт который принипает ajaxданные (ajax.php) в нем передавался заголовок, устанавливающий кодировку cp1251. Но как известно javascript работает только с утф.
Теперь другая проблема
ajax.php сформировал html -фрагмент и передает его обратно
<?
 header
("Content-Type: text/html; charset=utf-8");
  include 
$_SERVER['DOCUMENT_ROOT'].'/blocks/db.php';

  
$id_street intval($_POST['id_street']);

  
$sql mysql_query("SELECT * FROM srch_object WHERE id_street = $id_street ORDER BY name");

  if(
$sql && mysql_num_rows($sql)>0) {
      
$data .= '<label style="margin-left:4px;" for="obj">Дом</label> <br /><select style="margin-left:4px;" id="obj" name="obj">';
     while(
$a mysql_fetch_assoc($sql)) {
         
$data .= '<option value="'.$a['id'].'">'.$a['name'].'</option>';
     }
     
$data .= '</select><br />';
     echo 
$data;
  }
?>

Но тут такая проблема. Фрагмент передается в утф, а сам документ в кодировке cp1251. В итоге получаются иероглифы.
Как можно разрешить ситуацию?

Есть такая идея. Вот участок кода
function change_street(val) {
    var id_street = val.value;
    $.post("/blocks/ajax.php", {id_street: ""+id_street+""}, function(data){
         $("#d").html(data); // переменая data получается в кодировке utf-8, а нужно cp1251
    });
}

Каким образом можно переконвертировать переменую data на клиенте средствами javascript в cp1251?

  Ответить  
 
 автор: alexander95   (08.05.2011 в 19:44)   письмо автору
 
   для: ols   (08.05.2011 в 18:20)
 

//utf8 to 1251 converter (1 byte format, RU/EN support only + any other symbols) by drgluck
function utf8_decode (aa) {
    var bb = '', c = 0;
    for (var i = 0; i < aa.length; i++) {
        c = aa.charCodeAt(i);
        if (c > 127) {
            if (c > 1024) {
                if (c == 1025) {
                    c = 1016;
                } else if (c == 1105) {
                    c = 1032;
                }
                bb += String.fromCharCode(c - 848);
            }
        } else {
            bb += aa.charAt(i);
        }
    }
    return bb;
}


PS сам не проверял..

  Ответить  
Rambler's Top100
вверх

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