Код
function edit_cat_ok(id) {
var edit = document.getElementById("edit").value;
var url = "change_cat.php";
var param = "title=" + edit + "&id=" + id;
request.open("POST", url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", param.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = updatePage;
request.send(param);
}
var edit = document.getElementById("edit").value;
var url = "change_cat.php";
var param = "title=" + edit + "&id=" + id;
request.open("POST", url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", param.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = updatePage;
request.send(param);
}
change_cat.php
Код
<?php
include("../config.php");
$title = $_POST['title'];
$id = $_POST['id'];
$update_cat = "UPDATE `cat` SET `title`='$title' WHERE `id`='$id'";
if (MYSQL_QUERY($update_cat)) print "1";
?>
include("../config.php");
$title = $_POST['title'];
$id = $_POST['id'];
$update_cat = "UPDATE `cat` SET `title`='$title' WHERE `id`='$id'";
if (MYSQL_QUERY($update_cat)) print "1";
?>
Беда вот в чем: когда я посылаю значение латинскими буквами или цифрами, всё работает отлично. Когда пишу русскими буквами, в БД записываются карякули.
например: edit = привет
вот что записывает в БД: привет
Что делать?
Спустя 6 часов, 3 минуты, 52 секунды (31.07.2008 - 20:51) linedmk написал(а):
Дело в том что аякс отправляет данные только в кодировке utf-8 независимо какая кодировка используется на сайте. Возможно у Вас кодировка отличается от utf-8. Поэтому в аяксе нужно данные преобразовать функцией encodeURIComponent() или encodeURI()
На сервере преобразовать обратно кодировку нужных ПОСТ-ов, например в windows-1251
Код
var param = "title=" + encodeURIComponent(edit) + "&id=" + encodeURIComponent(id);
На сервере преобразовать обратно кодировку нужных ПОСТ-ов, например в windows-1251
Код
$title=iconv('UTF-8', 'windows-1251',$_POST["title"]);
Спустя 37 минут, 19 секунд (31.07.2008 - 21:29) Lorado написал(а):
Огромное спасибо!
Только вот еще не понял encodeURIComponent() кодирует в UTF-8?
Только вот еще не понял encodeURIComponent() кодирует в UTF-8?
Спустя 2 часа, 6 минут (31.07.2008 - 23:35) linedmk написал(а):
Функция encodeURIComponent() кодирует строку для использования в URL. То есть символы которые недопускается использовать в URL кодируются в крокозябры. Посмотри
Крокозябры будут состоять из % и буковок с циферками. Функции encodeURIComponent() и encodeURI() отличаются набором символов которые они преобразовывают. encodeURIComponent больше символов кодирует. например символ & он кодирует.
Код
alert(encodeURIComponent("какой-нибудь текст"));
Крокозябры будут состоять из % и буковок с циферками. Функции encodeURIComponent() и encodeURI() отличаются набором символов которые они преобразовывают. encodeURIComponent больше символов кодирует. например символ & он кодирует.
_____________