RussianPro
Эксперт
Дата регистрации:
14.07.2011 01:32:38
Сообщений: 114
Отправляю POST запрос в файл. Входящий текст закодирован в windows1251, а после JavaScript абракадабра вылезает. Скрипт JS тоже в windows1251 написан. В чём может быть проблема?
function addToBasket(str) {
var xmlhttp = getXmlHttp();
xmlhttp.open('POST', 'info.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('add_to_basket=1&str=' + encodeURIComponent(str));
}
Потом это всё обрабатывается и записывается в сессию
if ($_POST['add_to_basket'] == 1) {
$str = $_POST['str'];
if (!isset($_SESSION['basket'])) $_SESSION['basket'] = $str;
else $_SESSION['basket'] .= ', '.$str;
}
В итоге в сессии получается вот это Пицца - Пепперони, Пицца - Наполи.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Переходите на UTF-8, либо перед отправкой меняйте кодировку. Нормально отправляется только UTF-8 через JavaScript.
RussianPro
Эксперт
Дата регистрации:
14.07.2011 01:32:38
Сообщений: 114
Отправляю таким образом
<img src = "imgeas/image.jpg" onclick = "addToBasket('Строка')" />
Как перед отправкой перекодировать строку?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Замучаетесь это делать, это в PHP есть функция iconv(), а в JS такой функции нет. Можно искать в Интернете готовые функции, они достаточно большие, но они есть. Берите, проверяйте. Но лучше перекодировать весь сайт в UTF-8.
RussianPro
Эксперт
Дата регистрации:
14.07.2011 01:32:38
Сообщений: 114
Уже перекодировал с помощью iconv() в PHP, вроде теперь с кодировкой нет проблем. Теперь другая проблема. Я отправляю через JS POST-запрос в котором передаю только один параметр.
function updateBasket() {
var xmlhttp = getXmlHttp();
xmlhttp.open('POST', 'basket.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('update_basket=1');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var response = xmlhttp.responseText;
response = JSON.parse(response);
document.getElementById('basket').innerHTML = response.lenght;
}
else document.getElementById('basket').innerHTML = 'status ' + xmlhttp.status;
}
else document.getElementById('basket').innerHTML = 'readyState ' + xmlhttp.readyState;
}
setTimeout('updateBasket', 1000);
}
PHP всё прекрасно ловит, но ничего после не происходит.
session_start();
if ($_POST['update_basket'] == 1) {
if ($_SESSION['basket']) {
$str = $_SESSION['basket'];
$arr = explode(", ", $str);
echo json_encode($arr);
}
else echo 'В корзине нет покупок';
}
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
А как Вы определяете, что PHP ловит?
RussianPro
Эксперт
Дата регистрации:
14.07.2011 01:32:38
Сообщений: 114
Это мои доводы
Alnik-75
Продвинутый
Дата регистрации:
07.02.2012 11:45:49
Сообщений: 48
json'ы не работают с кириллицей, поэтому Вы ничего и не увидите. Сам раньше работал в этой кодировке,тоже все не хотел переходить, но потом все же пришлось. Поэтому совет- уходите в UTF-8. Одна проблема-нудная конвертация и переделка строковых функций