async function pageUpdate(event) {
// Если функция вызвана без аргументов:
if (typeof event == 'undefined') {
// Устанавливаем обработчики
// на все ссылки на странице:
$('body a[href]').click(pageUpdate);
}
// Если функция вызвана
// в результате клика
// по ссылке:
else {
// Берём адрес с нажатой ссылки
// и записываем в переменную link:
var link = event.target.href;
// Если ссылка ведет на наш сайт:
if (new URL(link)['host'] == location.host) {
// Предотвращаем переход:
event.preventDefault();
// Блокируем страницу, чтобы
// больше нельзя было кликать:
$('body').css('pointer-events', 'none');
// Активируем анимацию исчезновения (полупрозрачности):
var hide = $('body').animate({ opacity: 0.2 }, 500).promise();
var ajax = $.ajax(link); // Запускаем загрузку новой страницы
await hide; // Ждем окончания анимации исчезновения
// Вставляем данные на страницу беря их с ново-скачанной страницы:
var doc = new DOMParser().parseFromString((await ajax), 'text/html');
var html = $('body', doc).html();
$('body').html(html);
// Скролим в самый вверх:
$('body, html').animate({scrollTop: 0}, 0);
// Меняем адрес в адресной строке:
history.pushState(null, null, link);
// Заново ставим
// обработчики:
pageUpdate();
// Активируем анимацию
// постепенного появления:
await $('body').animate({ opacity: 1 }, 500).promise();
// Снимаем блокировку с документа:
$('body').css('pointer-events', '');
}
}
}
pageUpdate();
var request = new XMLHttpRequest();
request.open('GET', '/', false);
request.send(null);
if (request.status === 200) {
var type = request.getResponseHeader('Content-Type').split(';')[0].toLowerCase();
var u8a = new TextEncoder().encode(request.responseText);
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var bytes = u8a, i, len = bytes.length, base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
}
else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
var data_url = 'data:' + type + ';base64,' + base64;
console.log(data_url);
}
else {
console.log('Ошибка', request);
}
$.ajax({
url: url,
type: 'POST',
dataType: 'JSON',
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
success: function(json){
if(typeof json.success !== 'undefined'){
$.jGrowl(json.success);
} else if(typeof json.error !== 'undefined'){
$.jGrowl(json.error);
}
},
error: function(json, jqXHR, status, errorThrown, exception){
alert(JSON.stringify(json));
return $.jGrowl('ОШИБКА AJAX запроса: ' + status, jqXHR, json);
},
xhrFields: {
onprogress: function(event) {
console.log('Загружено на сервер ' + event.loaded + ' байт');
}
}
});
https://yousite.ru/?authcode=sdksfkjdfsdjksd
$_POST
был НЕ пустым надо отправлять данные в кодировке application/x-www-form-urlencoded
или multipart/form-data
. Вы в своем примере пытаетесь отправить данные в кодировке application/json
, при этом еще и неправильно это делайте.window.addEventListener('load', check); // Запуск check после полной загрузки страницы
async function check() {
var data = {
'test': 'Привет, мир!',
'myname': 'Дмитрий'
};
var response = await (await fetch('https://site.ru/script.php', {
'method': 'POST',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
'body': new URLSearchParams(data).toString()
})).text();
console.log('Ответ сервера:', response);
return response;
}
Intersection Observer API позволяет указать функцию, которая будет вызвана всякий раз для элемента (target) при пересечении его с областью видимости документа (по умолчанию) или заданным элементом (root).
input = document.querySelector('input');
input.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
input.dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));
input.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
input.dispatchEvent(new InputEvent('input', { bubbles: true }));
input.dispatchEvent(new InputEvent('change', { bubbles: true }));