X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
> Передача кирилицы ajax-ом
ShowPrint
ShowPrint
Topic Starter сообщение 15.9.2017, 19:26; Ответить: ShowPrint
Сообщение #1


Подмогните советом любителю, не бросайте в бидэ, плиззз...

По порядку:
Есть задумка отправить клиенту письмо сформированное из контента на странице.
Собственно данные собираются скриптом и передаются обработчику ajax-ом:
Развернуть/Свернуть


$.ajax({
    type:'POST',
    url:'/include/ajax/get_send_sizes.php',
    data:{'email':sendemailval,'style':cssBlock,'image':imgSrc,'table':sendHtml},
    success:function(data){
        if(data=='true'){
            ...
        }
    }
});
// email - адрес получателя
// style - стили для формирования html-письма
// image - url картинки
// table - таблица результатов с русским текстом

ну и кусок обработчика стандартный:
Развернуть/Свернуть


<?php
if ($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest"){
    header("Content-Type: text/html; charset=UTF-8");

// считывание отправленных переменных
    $_MailToSend=trim($_POST['email']);
    $_MailStyles=trim($_POST['style']);
    $_SizesImage=trim($_POST['image']);
    $_TableSizes=trim($_POST['table']);

echo $_TableSizes;

    ...

}
?>

Все данные передаются норм, засада с передачей/приемом 'table':sendHtml - табличка с цифрами и текстом кирилицы
Через "инструменты вебмастера" (остальной обработчик пока не коддил) вижу вместо кирилицы "корябушки"  :(

Начал разбираться, нагуглил в инете инфу что передача данных обработчику производится сугубо в utf-8 и попробовал предложенную "таблэтку":
а) при передаче данных обработчику:

data:{'email':sendemailval,'style':cssBlock,'image':imgSrc,'table':encodeURIComponent(sendHtml)}

б) получение данных обработчиком:

$_TableSizes=iconv('utf-8', 'windows-1251', trim($_POST['table']));

Результат тот-же: "корябушки"  :angry:

Что не так делаю? Памажите, люди добрые, кто чем может...  :rolleyes:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
TimurR
TimurR
сообщение 16.9.2017, 2:19; Ответить: TimurR
Сообщение #2


в utf-8 передавать надо жеж) или я не догнал?  
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 16.9.2017, 3:31; Ответить: ShowPrint
Сообщение #3


TimurR, ты догнал )))

Я это насерфил и стал передавать через encodeURIComponent (насколько понимаю именно в utf-8

Вопрос в том, что после того как обработчик принимает utf и я его пытаюсь преобразовать через iconv в инструментах разраба хрома я вижу крокозябры. (Выдаю через echo)

Или так и должно быть? Можно писать обработчик дальше и при отправке письма на почту с кодировкой все будет гуд?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 16.9.2017, 15:14; Ответить: miketomlin
Сообщение #4


ShowPrint, не совсем понял, как просматриваете поступившие на сервер данные в результате AJAX-запроса. Просто сохраните в файл POST-параметр и посмотрите в каком-нибудь hex-редакторе или текстовом редакторе, позволяющем отобразить/переключить тек. кодировку, что за кодировка (должна быть utf-8 вне зависимости от кодировки станицы с формой), например:

file_put_contents('table.log',$_POST['table']);

Письмо может быть и в utf-8, и в windows-1251. Это отдельная история.

P.S. На всяк. случай явно укажите формат передачи. Не помню, как это в jQuery. В оригинале примерно так:

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');



Сообщение отредактировал miketomlin - 16.9.2017, 15:14


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 18.9.2017, 11:42; Ответить: ShowPrint
Сообщение #5


miketomlin, спасибо что откликнулся, тёзка =)

( @ 16.9.2017, 18:14) *
не совсем понял, как просматриваете поступившие на сервер данные в результате AJAX-запроса

Php-обработчиком выводил через echo и смотрел через хром-инстр-разраба:
Прикрепленное изображение


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

$.ajax передает именно в utf-8 судя по:
При отправлении запроса на сервер, данные передаются в формате, указанном в contentType. По умолчанию используется 'application/x-www-form-urlencoded', который подходит в большинстве случаев. Если указать этот параметр явно, то он будет передан серверу (даже если туда не были отправлены никакие данные). Стоит отметить, что данные всегда будут передаваться в кодировке UTF-8. Это стоит учитывать при обработке данных на стороне сервера.

на всяк. случай попробую указать явно - хуже не будет  :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 18.9.2017, 12:45; Ответить: miketomlin
Сообщение #6


Судя по многочисленным Р/С, это utf, так что все в порядке. А причин появления кракозябл в браузере может быть несколько, например пытаетесь отобразить utf на windos-1251-странице, Web-сервер плевать хотел на ваш Content-Type, потому что у него в настройках прописано сообщать строго windows-1251, и т.п.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 18.9.2017, 12:57; Ответить: ShowPrint
Сообщение #7


(miketomlin @ 18.9.2017, 15:45) *
Судя по многочисленным Р/С, это utf, так что все в порядке.
Спасибо, Михаил.

Соответственно если это действительно utf-8 (вечерком проверю) и я собираюсь эти данные вставлять в текст письма, то мне достаточно сделать 

$_TableSizes=iconv('utf-8', 'windows-1251', $_POST['table']);

и с этой переменной формировать текст письма для отправки надеясь что всё будет норм?
Или с учетом того что в обработчике указан заголовок

header("Content-Type: text/html; charset=UTF-8");

перекодировка iconv является лишней?
Просто формирую текст письма в utf-8, а кодировку самого письма назначаю уже при отправке почтовой функцией, так?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 18.9.2017, 13:07; Ответить: miketomlin
Сообщение #8


У письма кодировка задается отдельно, соответственно если письмо отправляете в windows-кодировке, делаете преобразование, а если в utf-, то нет.
 
header тут по барабану, т.к. формируемый ей заголовок относится к выводу в браузер, а не к письму. Для письма вот почитайте: Как сделать отправку письма?
P.S. Еще разведите обычный и AJAX- серверные обработчики, чтобы при отключенном JS вы случайно не получили данные в windows-1251.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 18.9.2017, 13:27; Ответить: ShowPrint
Сообщение #9


(miketomlin @ 18.9.2017, 16:07) *
У письма кодировка задается отдельно
Эт я уже "проходил" и понимание есть  :)

За ссыль спасибо - сведу инфу с топиком "избранного" (здесь) и буду ваять  :rolleyes:

(miketomlin @ 18.9.2017, 16:07) *
Еще разведите обычный и AJAX- серверные обработчики, чтобы при отключенном JS вы случайно не получили данные в windows-1251.

Не совсем понял смысл слова "развести"  :wacko:
P.S. Судя по моей "средней" метрике JS отключен у 1 посетителя из 20к. Кроме того у меня кнопа "отправить" подгружается в асинхроне через jQuery (JS) и при отключенном JS посетитель её никогда не увидит )))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 18.9.2017, 13:34; Ответить: miketomlin
Сообщение #10


(ShowPrint @ 18.9.2017, 16:27) *
Не совсем понял смысл слова "развести"
Разделите на два отдельных. Если вообще не планируется использовать отправку данных формы обычным POST-запросом, пропишите в action адрес какой-нибудь заглушки или просто страницы, игнорирующей данные POST-запроса.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44765 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Ищу специалиста Wordpress/PHP/JS/AJAX
5 by_roXe 4283 4.11.2018, 17:09
автор: kikimora17
Открытая тема (нет новых ответов) Ищу специалиста по js, jquery, ajax, history api и т.д.
3 by_roXe 1526 15.3.2016, 14:17
автор: Edelweiss
Открытая тема (нет новых ответов) Требуются услуги программиста (jquery, ajax, php, html)
2 Упс 4089 11.4.2015, 14:25
автор: Упс
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыМузыкальный сайт / AJAX / DLE v10.1
Музыкальный сайт, который работает на технологии Ajax
11 fara 8558 11.9.2014, 1:57
автор: fara


 



RSS Текстовая версия Сейчас: 28.3.2024, 23:31
Дизайн