как отправлять JavaScript запрос в бинарном режиме на сайт с PHP
Использую пока JavaScript запрос рабочий такой:
let user_name = document . getElementById ( 'login' ) . value ;
localStorage . setItem ( 'username' , user_name ) ;
document . getElementById ( 'login' ) . value = "" ;
let xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'POST' , 'php/checkusername.php' ) ;
xhr . setRequestHeader ( "Content-type" , "application/x-www-form-urlencoded" ) ;
xhr . onload = fun_make_answer ;
let sname = fun_encrypt_username ( user_name ) ;
xhr . send ( 'name=' + encodeURIComponent ( sname ) ) ;
в нём я шифрую имя пользователя и отправляю текстом в checkusername.php :
if ( isset ( $_POST['name']) ) {
$user_name = $_POST ['name'] ;
# имя юзера зашифровано сессионным входящим паролем
$user_name = DecryptUserName ( $user_name ) ;
$_SESSION [ 'checkusername' ] = $user_name ;
...
Никак не могу найти понятные примеры, как делать send не текстом, а в бинарном режиме. Бинарный нужен для отправки более длинных сообщений. Так как конвертирование в текст увеличивает размер данных в два раза.
Показывают везде то json , то FormData. Какой способ использовать и как? желательно с минимальными исправлениями кода
Ответы (1 шт):
Автор решения: Evgeniy Leonidov
→ Ссылка
Для отправки бинарных данных в XMLHttpRequest берём объект FormData (не претендую на работоспособность! Не проверяю!):
let user_name = document.getElementById('login').value;
localStorage.setItem('username', user_name);
document.getElementById('login').value = "";
let xhr = new XMLHttpRequest();
xhr.open('POST', 'php/checkusername.php');
xhr.onload = fun_make_answer;
let data = new FormData();
let sname = fun_encrypt_username(user_name);
data.append('name', sname);
xhr.send(data);