Ответы пользователя по тегу JavaScript
  • Как с помощью php заменить текст в нутри тега,?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    <?= $balance ?? "Войти" ?>
    Ответ написан
    Комментировать
  • Как наполнить объект?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    max_kruze ты показывай код своих попыток преобразования, не стесняйся.
    На текущий момент я вижу следующие проблемы:
    1. Во входных данных отсутствует куча закрывающих кавычек, из-за чего код в принципе не работает.
    2. Входные данные не консистентны - иногда название команды оказывается седьмым элементом в массиве, а иногда - шестым. Возможно есть и другие неконсистентные места.

    После того как исправишь проблемы со входными данными, можно приступать к анализу выходных данных.
    У тебя в результирующем объекте для каждой страны есть свойство "sport", хотя дальнейшая логика объекта подсказывает, что спортов может быть как минимум два.

    В качестве аттракциона невиданной щедрости я дарю тебе кусок кода, который на 20% реализует функционал, но даёт ключ к пониманию механизма преобразования.
    Код подразумевает что с проблемами входных данных ты сможешь разобраться самостоятельно

    result = {}
    
    info.forEach((team) => {
        const country = team[0]
        const sport = team[1]
        const title = team[6]
        const place = team[7]
        const squad = team[8]
        const peoples = team[9]
        
        if (!result.hasOwnProperty(country)) {
        	result[country] = {}
        }
        
        if (sport === 'football') {
        	if (!result[country].hasOwnProperty('footballTeam')) {
                result[country]['footballTeam'] = {}
                
                if (!result[country]['footballTeam'].hasOwnProperty(title)) {
                	result[country]['footballTeam'][title] = {}
                }
                
                result[country]['footballTeam'][title]['place'] = place
                result[country]['footballTeam'][title]['squad'] = squad
                result[country]['footballTeam'][title]['peoples'] = peoples
            }
        }    
    })
    Ответ написан
    Комментировать
  • Вопрос по отправка формы без перезагрузки - AJAX?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Sendmail на сервере настроен? Если нет или не знаешь, что это такое, то явно пропиши параметры SMTP в своём php-файле

    $mail->isSMTP(); //Send using SMTP
    $mail->Host = 'smtp.example.com';  //Set the SMTP server to send through
    $mail->SMTPAuth = true;  //Enable SMTP authentication
    $mail->Username  = 'user@example.com'; //SMTP username
    $mail->Password  = 'secret';  //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;  //Enable implicit TLS encryption
    $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`


    Если и этого будет недостаточно, то придётся пойти на страшные меры: обернуть код в try...catch, включить debug и смотреть какая ошибка возникает при отправке.
    Кстати, именно так и по умолчанию и было сделано в документации к библиотеке, который ты пользуешься в разделе Simple Example
    Ответ написан
    Комментировать
  • Как регулярным выражением удалить все теги из строки вместе с содержимым?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Так как я недолюбливаю регулярные выражения, публикую решение этой задачи без их использования :)
    function removeTagsWithContent(str) {
        let result = []
        let inOpeningTag = false
        let inClosingTag = false
        let inContent = false;
    
        str.split('').forEach((char, i) => {    
        	if (!inOpeningTag && !inContent && char === '<') {
                inOpeningTag = true
                return
            }
            
            if (inOpeningTag && char === '>') {
                inContent = true
                inOpeningTag = false
                return
            }
            
            if (inContent && char === '<') {
                inContent = false
                inClosingTag = true
                return
            }
            
            if (inClosingTag && char === '>') {
                inClosingTag = false
                return
            }
            
            if (!inOpeningTag && !inContent && !inClosingTag) {
                result.push(char)
            }
        })
        
        return result.join('')
    }
    Ответ написан
    Комментировать
  • Как распарсить такой JSON?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    но я никак не могу с ним работать, я пытался пропускать его через функции нормализации, но ни в какую

    А не надо бездумно совать свою строку какому-то левому коду и ожидать что он всё за тебя сделает.
    Надо проанализировать что ты получаешь и только потом начинать что-то делать.
    В данном случае видно две очевидные проблемы:
    1. В строке отсутствуют все закрывающие символы, которые должны быть в конце строки - кавычки, фигурные скобки, квадратные скобки - всё потеряли. В первую очередь надо найти того кто это написал, ткнуть его носом и громко и чётко произнести: "кто накодил? Кто накодил, а?", после чего посадить его исправлять серверную часть.
    2. Внутренний объект зачем-то закодирован в json второй раз. Тут уже можно не кричать, а дать лёгкого добродушного пинка backend-разработчику, но таким образом чтоб после этого его тело двинулось в сторону клавиатуры, используя которую, он исправит и этот косяк.

    const weirdString  = fetch() // здесь получаешь свою странную и  корявую строку
    const jsonEncoded = weirdString + '\\"}]}]"}' // для примера я вручную посчитал всё закрывающее барахло, но, возможно что для этого надо будет написать отдельную функцию. Ну, тут сам справишься, я думаю
    const decodedOnce = JSON.parse(jsonEncoded) // раскодируем первый раз
    const decodedTwice = JSON.parse(decodedOnce['21']); // раскодируем второй раз внутренний объект.
    Ответ написан
    Комментировать
  • Почему Tatum API не принимает запрос на создание файла?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Первое
    У тебя поле называется "image"
    <input type="file" name="image">

    А в документации английским по белому написано что оно должно называться file

    Второе:
    В документации написано, что обязательно указывать header content-type:multipart/form-data, чего ты не делаешь.
    Даже код за тебя в документации написали уже ж:

    62169929b9bf9356824846.png

    PS A Google тут вообще каким боком?
    Ответ написан
    Комментировать
  • Вывод товаров на сайте с сортировкой по удаленности от адреса покупателя?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Вариант 1:
    Считаем данные с помощью Distance Matrix, тупо скармливая ему два адреса: https://yandex.com/dev/routing/distance_matrix/

    Вариант 2:
    1. Вбиваем в систему помимо адреса склада, его широту и долготу
    2. Узнаём широту и долготу пользователя при вводе адреса (yandex autocomplete это умеет, хотя для подсказок адреса в РФ я бы выбрал Dadata, потому что он намного лучше распознаёт пользовательский ввод. Ну а широту с долготой и там и там получить можно)
    3. Считаем расстояние, зная широту и долготу двух объектов

    Первый вариант проще, но возможно будет дороже, особенно если у тебя реально много заказов.
    Ответ написан
    4 комментария
  • Можно ли без рекурсии перебрать такой массив?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    let extractedExbs = [];
    
    arr.forEach((event) => {
        event.artists.forEach((artist) => {
            artist.exbs.forEach((exb) => {
                extractedExbs.push(exb) // ну или любое другое действие тут
            })
        })
    })
    Ответ написан
    Комментировать
  • Как формируется get параметр у сайта?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    https://www.digikey.ca/products/_next/static/chunk...
    Ищи в тексте selectedFilters
    Ответ написан
    Комментировать
  • Как отследить все исходящие запросы на JS?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Чтобы это сделать, вам надо перехватить все fetch и xhr-запросы,
    Вот мини-библиотека, которая поможет в этом:
    https://gist.github.com/benjamingr/0433b52559ad61f...
    Ответ написан
    Комментировать
  • Как правильно динамически обновлять данные?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Наиболее простым решением будет перезагружать ваш блок с помощью .load.
    Примерно так
    setInterval(function() { 
        $('#table').load(window.location.href + ' #table > .row' )
    }, 60000)


    Что же касается сложного пути, то тут надо будет сделать следующее:
    1. Научить сервер отдавать только данные, а не рисовать таблицу. Да, напрямую со стороны клиентского Javascript'а в базу не постучишься, это должна делать серверная часть вашего приложения
    2. Делать ajax-запрос, получать эти данные и вставлять из в таблицу
    Ответ написан
    Комментировать
  • Как изменить цвет графика в morris js с определенной даты?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    barColors: function (row, series, type) {
        const withAd = true; // либо в PHP добавьте этот флаг, либо тут по датам определите
        return withAd ? "green" : "blue";
    }
    Ответ написан
    Комментировать
  • Как превратить специальные символы?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    В комментариях выяснили, что на чистом JS c использованием innerHTML проблем не возникает.
    В вот возникает при использовании React.


    React по умолчанию вставляет данные как текст, а как как HTML.
    Чтобы этого избежать, можно использовать dangerouslySetInnerHTML.
    Если данные приходят не из доверенного источника, то крайне желательно их предварительно обработать (например, с помощью https://www.npmjs.com/package/dompurify)
    Ответ написан
    Комментировать
  • Возможно ли вызвать функцию Jquery по ссылке на другую страницу?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Функционал реализован в рамках какого-то участка кода.
    Подключите этот код на page1 и будет вам счастье

    PS Если нужно чтоб по клику произошёл сначала переход, а потом вызвалась функция, то делается это так:
    1. В ссылку на странице page1 дописываете параметр, который подскажет скрипту на page2 что надо произвести дополнительные телодвижения. Например, page2?doFooPlease=1
    2. В js-коде на page2 проверяете, есть ли в адресной строке параметр doFooPlease. Если есть и его значение равно 1, то вызываете свою foo()
    3. Бонусом с помощью historyAPI можете выкинуть ненужный теперь doFooPlease=1 чтоб не оскорблять высокоэстетичный вид адресной строки этими вот некрасивыми параметрами
    Ответ написан
    1 комментарий
  • Как сделать синхронный запрос через fetch?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    1. Можете воспользоваться XMLHttpRequest вместо fetch. В методе open можно явно указать, что запрос необходимо сделать синхронно. Подробная документация тут: https://javascript.info/xmlhttprequest
    2. Можете воспользоваться тем что fetch возвращает promise и написать свой код соответствующим образом. Вы уже почти это сделали когда решили возвращать результат выполнения fetch. Осталось чуть-чуть, примерно так:

    getDataByINN(myPersonPars['INN']).then((suggestion) => {
        const myCompany = suggestion
    })
    Ответ написан
    4 комментария
  • Как разместить HTML страницу во фрейме?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    iframe.docement.write(decodeURIComponent('<?= rawurlencode($message) ?>'));
    Ответ написан
  • Как скачать скрипт с сайта?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    trafficban.com/for.developers.en.html
    Еще у них есть API, но без документации.
    Судя по запросам в отладчике, сначала для каждого дня получается ключ, а потом с помощью этого ключа получаются данные: 5d2cdd15f1ec7955138518.png
    Ну и можно попробовать парсить HTML, ага
    Ответ написан
    Комментировать
  • Как с помощью JS или Jq отследить нажатие на ссылку которая находится в определенном классе?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    Класса у ссылки-то тоже нет. Но вот к data-элепенту прицепиться можно.
    Пример:
    $('[data-cke-saved-href="tel:+77771256606"]').on('click', function() { 
        alert('clicked');
    })


    Или просто к href:
    $('[href="tel:+77771256606"]').on('click', function() { 
        alert('clicked');
    })


    Ну и можно использовать класс родительского элемента:
    $('.btn_descr a').on('click', function() { 
        alert('clicked');
    })
    Ответ написан
    1 комментарий
  • Как выбрать эти значения из json?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    var data = {...}; // ваш json
    var lastGameHomeScore = data.pointByPoint.games[0].score.homeScore;
    var lastGameAwayScore = data.pointByPoint.games[0].score.awayScore;
    Ответ написан
    Комментировать