Задать вопрос
  • Запрос fetch заменят плюсы из текста на пробел, как это исправить?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вы неправильно формируете тело запроса. Есть удобный конструктор для этого:
    body: new URLSearchParams({ test: 'LOL+ggggg' }).toString(),

    В конструктор URLSearchParams передаете объект с данными, которые хотите отправить, а дальше он сам преобразует этот объект в корректную строку текста полностью соответствующую формату application/x-www-form-urlencoded

    Кстати, вы могли бы упростить код, если бы использовали async / await:
    async function send(obj) {
    
    	var response = await (await fetch('./src/database/userService/user.php', {
    		body: new URLSearchParams(obj).toString(),
    		cache: 'no-cache',
    		headers: { 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8' },
    		method: 'POST',
    		mode: 'cors'
    	})).text();
    	
    	console.log('Ответ сервера:', response);
    	
    }
    
    send({ test: 'LOL+ggggg' });
    Ответ написан
    Комментировать
  • Как подключить JQuery в расширение браузера Chrome?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Добавь в манифесте следующее разрешение:
    ...
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
    ...

    Это разрешение нужно, чтобы работал eval.

    Далее, если тебе где-то нужен jQuery, допустим в файле background.js, то банально используешь там eval:
    Нажмите, чтобы развернуть код
    jQueryDownload(); // Запускаем загрузку jQuery
    
    // Функция для загрузки jQuery:
    
    async function jQueryDownload() {
    	
    	// Загружаем библиотеку jQuery как текст с оф. сайта и записываем в переменную code:
    	var code = await (await fetch('https://code.jquery.com/jquery-3.6.0.min.js')).text();
    	
    	// Выполняем код:
    	window.eval(code);
    	
    }

    Разумеется надо понимать, что запуск уже своего собственного кода надо инициировать после загрузки jQuery!

    Например, так:
    Нажмите, чтобы развернуть код
    jQueryDownload(); // Запускаем загрузку jQuery
    
    // Функция для загрузки jQuery:
    
    async function jQueryDownload() {
    	
    	// Загружаем библиотеку jQuery как текст с оф. сайта и записываем в переменную code:
    	var code = await (await fetch('https://code.jquery.com/jquery-3.6.0.min.js')).text();
    	
    	// Выполняем код:
    	window.eval(code);
    	
    	// Запуск своего кода:
    	$(startMyJavaScriptCode);
    	
    }
    
    // Функция уже со своим кодом:
    
    function startMyJavaScriptCode() {
    	
    	// ...
    	
    	console.log('Запуск своего кода');
    	
    	// ...
    	
    }
    Ответ написан
    Комментировать
  • Как создать QR код WhatsApp на сайте для авторизации вэб версии?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Варианта тут 2:
    1. Используй официальное API
    2. Пиши бота (браузерное расширение) для веб-версии
    Ответ написан
  • Как вывод в консоль дожидается выполнения async функции?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Асинхроная функция всегда возвращает промис, вы своим console.log выводите отнюдь не результат, а тупо промис от функции. Далее, в консоли вполне можно запускать асинхронный код, попробуйте прямо сейчас вбить в консоли:
    response = await (await fetch('https://jsonplaceholder.typicode.com/users')).json();
    console.log(response);

    Или же применительно к вашему коду делайте так:
    async function func() {
      const response = await fetch('https://jsonplaceholder.typicode.com/users');
      return await response.json();
    }
    console.log(await func());
    Ответ написан
    Комментировать
  • Как изменить span через jquery, без id или класса?

    zkrvndm
    @zkrvndm
    Архитектор решений
    jQuery позволяет искать элементы по содержащемуся внутри тексту.

    В вашем случае попробуйте сделать так:
    $('span:contains("test2")').html('новый текст');
    Ответ написан
    Комментировать
  • Почему получаю ошибку Uncaught (in promise) SyntaxError: expected expression, got

    zkrvndm
    @zkrvndm
    Архитектор решений
    Перепишите код свой, у вас jQuery в вперемешку с обычным кодом идет, обычно так не делают.

    function fastOrder(product_id) {
    	
    	$('body').prepend(`<section class="fastorder-custf">
    		<div class="ajax_result">
    			<i class="fa fa-spinner fa-pulse overlay__icon" aria-hidden="true"></i>
    		</div>
    	</section>`);
    	
    	$('.mfp-close').trigger('click');
    	
    	$.ajax({
    		url: 'index.php?route=order/getForm',
    		type: 'POST',
    		contentType: 'application/json; charset=UTF-8',
    		data: product_id,
    		dataType: 'html',
    		success: function(response) {
    			$('.ajax_result').html('Ответ сервера: ' + response);
    		},
    		error: function(xhr, status) {
    			$('.ajax_result').html('При отправке запроса произошла ошибка, детали см. в консоли');
    			console.log('При отправке запроса произошла ошибка:');
    			console.dir(xhr);
    		}
    	});
    	
    }
    Ответ написан
  • Как раскодировать JSON?

    zkrvndm
    @zkrvndm
    Архитектор решений
    При условии, что JSON валидный, парсишь его так:
    $array = json_decode($response, true);
    echo $array['list'][0]['name1'];

    Обрати внимание, что вторым параметром в json_decode надо передавать true, если хочешь получить массив.
    Ответ написан
  • Как бюджетно создать интернет-магазин?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Как бесплатно создать интернет-магазин

    Шаг 1. Регистрируешь бесплатный хостинг. Например, здесь: https://beget.com/ru/hosting/free

    Шаг 2. Покупаешь домен в зоне .ru за 179 руб. (цена за год) - это будет адрес твоего магазина.

    Шаг 3. Заливаешь на хостинг любую бесплатную CMS. Например, версию Витрина отсюда: https://moguta.ru/download

    Шаг 4. После установки и настройки CMS, через админку CMS добавляешь товары, тестируешь все.

    Шаг 5. Если все хорошо, пользуешься и радуешься, если чувствуешь или видишь, что не хватает ресурсов, переходишь на платный хостинг, но в принципе для старта должно хватить и бесплатного (без гарантий).

    Если хотите совсем-совсем бесплатно даже без трат на домен, то тогда тупо создавайте свой магазин на Авито или ВКонтакте. Вопрос продаж в интернете - это не про наличие или отсутствие магазина, а скорее про наличие или отсутствие каналов привлечения клиентов. Продавать товары можно и без интернет-магазина, хоть через группы ВКонтакте, хоть через WhatsApp, хоть через прямые звонки на ваш телефон, тут важнее вопрос рекламы, а не наличие или отсутствие сайта.
    Ответ написан
    Комментировать
  • Как принять данные при POST запросе через php://input?

    zkrvndm
    @zkrvndm
    Архитектор решений
    При отправке FormData поток php://input автоматом очищается во время формирования $_POST, такое поведение конечно же можно отключить, но это кастрирует ваш сервер и массив $_POST просто перестанет формироваться при получении данных. Вы бы лучше написали зачем именно вам это надо, а там видно будет, вдруг вы изобретаете велосипед.
    Ответ написан
    Комментировать
  • Как получить данные из запроса?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вставьте в консоли браузера во вкладке Console:
    (async function() {
        response = await (await fetch('https://opentdb.com/api.php?amount=10&category=23&difficulty=easy&type=boolean')).json();
        console.log(response);
    })();

    В переменной response будет лежать ответ сервера. Чтобы получить доступ к каким-то конкретным свойствам используйте квадратные скобки, например response['result'] или response['response_code']

    Для перебора массива, что лежит в свойстве response['result'] можете использовать цикл for
    Ответ написан
    Комментировать
  • Где лучше хранить проверочный смс код?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Его в принципе не обязательно где-то хранить. Достаточно придумать правило для генерации, учитывающее текущее время с точностью до минуты и номер телефона, а далее при вводе кода клиентом просто проверяем соответствует ли код правилу.
    Ответ написан
    2 комментария
  • Как заменить номера телефонов в iframe на ***?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Тут есть тонкий момент, если фрейм грузится с вашего сайта, то без проблем можно заменить, а вот если с чужого сайта, то без танцев с бубном не обойтись, так как по умолчанию ваш сайт не имеет доступа к содержимому чужого сайта. Чей сайт размещен во фрейме? Совпадает ли домен фрейма и домен вашего сайта?
    Ответ написан
  • Почему не получается отправить ajax запрос?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вот здесь вы передаете некорректный адрес:
    $.get('@Url.Action("InitialFavorite", "Home")')
    Вы передаете строку кода, а надо конкретную ссылку.
    Ответ написан
  • Как снести все скрипты на странице?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Спасибо Aetae за подсказанное решение, которое работает в Firefox:
    document.wrappedJSObject.write(''); document.close();

    Если запустить метод из контент-скрипта в своем расширении еще до начала отрисовки DOM, то это позволяет предотвратить запуск скриптов сайта, а далее на страницу уже можно спокойно залить свое содержимое.
    Ответ написан
    Комментировать
  • Почему document.write не работает в Firefox?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Спасибо Aetae за подсказанное решение, которое работает в Firefox:
    document.wrappedJSObject.write(''); document.close();

    Если запустить метод из контент-скрипта в своем расширении еще до начала отрисовки DOM, то это позволяет предотвратить запуск скриптов сайта, а далее на страницу уже можно спокойно залить свое содержимое.
    Ответ написан
    Комментировать
  • Как в промисе дождаться выполнения обычной функции?

    zkrvndm
    @zkrvndm
    Архитектор решений
    async function test() {
        await one();
        tow();
    }
    
    test();
    Ответ написан
    Комментировать
  • Как скопировать стили всех тегов в элементе body c помощью spinCSS или тругих плагинов?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Чтобы получить стили всех элементов на странице, надо эти элементы перебрать в цикле и запросить стили по каждому отдельно:
    document.querySelectorAll('*').forEach(function(elem) {
        style = getComputedStyle(elem);
        console.log(style);
    });

    Далее уже собранные стили можно обработать как душе-угодно.
    Ответ написан
  • Как повторно отправить curl при неудаче?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Используйте цикл do while, чтобы бесконечно отправлять запросы, в условиях цикла пропишите, чтобы цикл повторялся до тех пор, пока не получен нужный ответ.
    Ответ написан
    Комментировать
  • Можно ли разрешить просмотр только при Ajax-подгрузке страницы?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Делай так:
    <?php
    
    // Если мы получили GET-запрос:
    
    if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    	
    	header('Location:/', TRUE, 301); // Переадресуем на главную
    	
    }
    
    // Если мы получили POST-запрос:
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    	
    	// Выводишь данные, которые нужны
    	
    }

    Когда делаешь аякс-запрос, просто поменяй тип запроса с GET на POST.
    Ответ написан
    Комментировать
  • Бесплатный VPN-плагин для хрома, чтобы переключить IP на заданную страну?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Тебе нужен Adguard VPN:
    https://chrome.google.com/webstore/detail/adguard-...
    Бесплатно в месяц дают 3 гигабайта на 1 почту / учетную запись, скорость и количество стран не ограничивают. Быстродействие отличное: у них свой собственный протокол, который обеспечивает минимальные задержки при серфинге и никак не блокируется фильтрами на стороне провайдеров, так как работает поверх обычного https.
    Ответ написан