TssDragon
Новичок
Всем здравствуйте.
Возник очередной вопрос, прошу помощи.
Собственно:
1) есть форма
2) с помощью jquery перехватываю отправку формы и сериализую данные
3) с помощью ajax отправляю на сервер
4) на сервере принимаю данные и пытаюсь их декодировать и распарсить в массив для дальнейшей работы
Все бы хорошо, только русские символы не декодируются
Пример:
ввожу "Иванов Иван Иванович 01.01.1970"
передается строка "last_name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&first_name=%D0%98%D0%B2%D0%B0%D0%BD&second_name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&birthdate=1971-01-01"
на сервере, после
получаю
"last_name=\u0418\u0432\u0430\u043d\u043e\u0432&first_name=\u0418\u0432\u0430\u043d&second_name=\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447&birthdate=1971-01-01"
после
получаю
"last_name=\u0418\u0432\u0430\u043d\u043e\u0432&first_name=\u0418\u0432\u0430\u043d&second_name=\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447&birthdate=1971-01-01"
Насколько я понимаю, он переводит url закодированные символы в unicode (utf-8)
Пробовал делать
и
и пробовал даже
=>
Ничего не помогает ![Frown :( :(](/talk/styles/default/xenforo/smilies/frown.png)
А после
русские символы в "??????" превращаются...
С латинскими символами, соответственно, все в порядке.
Прошу помощи, где я не прав![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
Возник очередной вопрос, прошу помощи.
Собственно:
1) есть форма
HTML:
<form id="add-new-element" accept-charset="utf-8">
<span class="client-details-p">Фамилия</span>
<input type="text" name="last_name" class="client-details-input">
<span class="client-details-p">Имя</span>
<input type="text" name="first_name" class="client-details-input">
<span class="client-details-p">Отчество</span>
<input type="text" name="second_name" class="client-details-input">
<span class="client-details-p">Дата рождения</span>
<input type="date" name="birthdate" class="client-details-input">
<span class="client-details-p">Область видимости</span>
<select name="scope" class="client-details-input"></select>
<input type="submit" id="add-new-submit" data-type="person" value="Сохранить">
</form>
Код:
$(document).on('submit', '#add-new-element', function (e) {
e.preventDefault();
let element = $(this);
let type = element.find('input[type=submit]').data('type');
let dataForm = element.serialize();
if (DEBUG == true) {
console.log(type);
console.log(dataForm);
}
addingNewElement(type, dataForm);
return 0;
});
Код:
function addingNewElement(type, dataForm) {
let controller = selectController(type);
let list = 'adding_new';
$.ajax({
type: 'post',
url: 'ajax.request.php',
data: {list: list, controller: controller, data: dataForm},
success: function (data) {
if (DEBUG == true) console.log(data);
//showContent(data.guid, type);
},
error: function (error) {
if (DEBUG == true) console.log(error);
}
});
}
PHP:
public static function addNewElement(RegkodData $regKodData, \PHPAuth\Auth $auth, $data = null) {
if ($data == null) {
echo json_encode("error: no data");
} else {
$dataArray = array();
$debugArray = array();
$guid = $auth->getUserId();
$data = urldecode($data); // декодирую строку
array_push($debugArray, $data);
parse_str($data, $dataArray); // преобразую в массив
array_push($debugArray, $dataArray);
echo json_encode($debugArray);
}
}
Пример:
ввожу "Иванов Иван Иванович 01.01.1970"
передается строка "last_name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&first_name=%D0%98%D0%B2%D0%B0%D0%BD&second_name=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87&birthdate=1971-01-01"
на сервере, после
PHP:
urldecode
"last_name=\u0418\u0432\u0430\u043d\u043e\u0432&first_name=\u0418\u0432\u0430\u043d&second_name=\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447&birthdate=1971-01-01"
после
PHP:
parse_str
"last_name=\u0418\u0432\u0430\u043d\u043e\u0432&first_name=\u0418\u0432\u0430\u043d&second_name=\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447&birthdate=1971-01-01"
Насколько я понимаю, он переводит url закодированные символы в unicode (utf-8)
Пробовал делать
PHP:
utf8_decode()
PHP:
unicode_decode
PHP:
iconv()
PHP:
json_encode()
PHP:
json_decode(, JSON_UNESCAPED_UNICODE
)
![Frown :( :(](/talk/styles/default/xenforo/smilies/frown.png)
А после
PHP:
utf8_decode()
С латинскими символами, соответственно, все в порядке.
Прошу помощи, где я не прав
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)