|
|
|
|
<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 не работает | |
|
|
|
|
|
|
|
для: ols
(08.05.2011 в 17:45)
| | 1) Какая версия Internet Explorer?
2) Какая версия jQuery?
3) Что такое val, откуда он берется и что дает alert(val.value); для Internet Explorer? | |
|
|
|
|
|
|
|
для: 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? | |
|
|
|
|
|
|
|
для: 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 сам не проверял.. | |
|
|
|