• Как передать значение переменной из JS в PHP без перезагрузки страницы?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Так у вас блок success пустой
    success: (res) => {
        console.log(res);
      }

    Блок success отрабатывает когда у вас возвращается HttpStatusCode 200, но вы там ничего не делаете.

    Что нужно сделать? В соответствующем блоке success настраивать вывод/изменений элементов DOM структуры.

    Ответ написан
    2 комментария
  • Почему fetch отдаёт 401 при JWT авторизации на сервер asp.net core web api?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Если вкратце, что и почему работает:


    1. Настройка CORS. Для того, что бы настроить cors для React(Next)JS Application, нужно указывать адрес https и это важно, поскольку при запуске приложения React(Next)JS адрес начинается с http. Пример:
      // ...
      services.AddCors(options =>
      {
          options.AddPolicy("AllowTeachToolClient",
              builder =>
              {
                  builder.WithOrigins("http://localhost:3000", "https://localhost:3000");
                  builder.AllowAnyHeader();
                  builder.AllowAnyMethod();
              });
      });
      // ...



    2. При генерации Jwt токена, нужно использовать именно SymmetricSecurityKey. Это для тех, кто захочет аналогично как я попробовать использовать что-то типа RSA(2048)

      Я не говорю, что они не работают, просто для начала с этим могут быть проблемы с реализацией



    3. Самое главное это заголовки. Лично у меня проблема решилась при наличии следующих header'ов:
      • Get:
        'Accept': '*/*',
        'Host': 'http://localhost:3000',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer {token}'



      • Post:
        'Accept': '*/*',
        'Host': "http://localhost:3000",
        'Content-Type': 'application/json;'



        Понятно, что наличие заголовка
      Authorization зависит от того, куда кидаете запрос. Обычно используется, для доступа к [Authorize] контроллерам/эндпоинтам



    4. Настройка Cors (Нюанс, для тех, кто с таким может столкнуться). Код для регистрации политики Cors:
      services.AddCors(options =>
      {
          options.AddPolicy("AllowTeachToolClient",
              builder =>
              {
                  builder.WithOrigins("http://localhost:3000");
                  builder.AllowAnyHeader();
                  builder.AllowAnyMethod();
              });
      });


      И самое главное, что ниже эту же политику нужно подключить перед тем, как вы будете использовать app.UseAuthentication(); и app.UseAuthorization();. Вырезка с самого вопроса:

      var app = builder.Build();
      
      app.UseCors("AllowTeachToolClient");
      
      app.UseHttpsRedirection();
      
      app.UseAuthentication();
      app.UseAuthorization();
      
      app.MapControllers();
      
      app.Run();



    Ответ написан
    Комментировать
  • Как мне перенаправить программу отправляющую http post запрос на другой адрес?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Что конкретно вы имеете в виду?

    У вас есть готовая программа (эхэшник), который взаимодействует с каким-то удалённым сервером? Тогда просто поставьте прокси и всё, весь трафик будет перенаправляться через прокси-сервер и всё.

    У вас есть проект, который общается с удалённым сервером?
    Просто поменяйте адрес запроса. Всё )

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Опираясь на некоторые детали в комментариях к вопросу, могу предположить, что вы могли бы отслеживать саму позицию элемента через JS относительно некоторых веще:
    • Экрана/Монитора
    • Родительский элемент
    • Документ


    Это можно сделать путём того же обсервера, который будет отслеживать изменения этих свойств. Это могут быть таки свойства как ClientHeight/Width и т.д.
    Ответ написан
    3 комментария
  • Как передать массив FormData через ajax?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Методом тыка, спустя три дня перебора комбинаций методов нашёл один, который работает. Конечно, он меня не удовлетворил в силу способа отправки данных, но это, по крайней мере, работает

    let packagesForm = new FormData();
    for (let i = 0; i < packages.length; i++) {
        packagesForm.append(`vm[${i}].Image`, packages[i].Image);
        packagesForm.append(`vm[${i}].MeasureUnit`, packages[i].MeasureUnit);
        packagesForm.append(`vm[${i}].VolumeUnit`, packages[i].VolumeUnit);
        packagesForm.append(`vm[${i}].Volume`, packages[i].Volume);
        packagesForm.append(`vm[${i}].Price`, packages[i].Price);
        packagesForm.append(`vm[${i}].ProductId`, Number(response.id));
    }
    Ответ написан
    Комментировать
  • Где можно узнать самый актуальный стек для веб разработки на c#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Тут уже можно опираться на саму суть и предназначение языка и фреймворка, на котором вы хотели бы реализовать ваш проект. Первое, что вам нужно учесть (Вспомнить), это то, что у каждого языка есть своё конкретное предназначение. Аналогично и у фреймворка. Разберитесь с тем, для чего подходит тот или иной фреймворк и посмотрите, подходит ли он для ваших задач. Может ли этот фреймворк технически реализовать необходимый вам функционал?

    По факту, не выполнимых задач нет, но этому можно посмотреть с другой стороны, на каком фреймворке будет проще решить вашу задачу.

    Соответстенно, отсюда и смотрете весь стек технологий, который вам необходим. Разбейте проект на части и выберите технологии, которые наилучшим образом подходят для реализации данной задачи.

    После выбора необходимых технологий уделите время для проверки совместимости этих фреймворков и технолгий, как их компонировать в одном проекте. Исходя отсюда, посмотрите, какие связки так же являются актуальными
    Ответ написан
  • Где скачать сверстанные макеты?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вообще можете попробовать тут. Или тут
    Ответ написан
    1 комментарий
  • Как осуществить фильтрацию через чекбокс?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Если у вас есть уже готовая функция для фильтрации, тогда просто на чекбоксы повешайте событие клика (Или другое) и уже там делайте фильтрацию
    Ответ написан
  • Почему после http запроса не работает программа?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Проблему решил тем, что вынес вызов метода, в котором выполняется http запрос, в отдельный метод, который я уже в свою очередь вызываю в конструкторе формы
    Ответ написан
    Комментировать
  • Z-index головоломка - как расположить фигуры внахлест одну за другой?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Окей, включаем математику. Если предположить, что z-index 1-го (Красный) элемента x, тогда z-index 2-го элемента (Зеленый) y должен быть y > x. Теперь интересное. Если брать z-index 3-го (Синего) элемента z относительно 1-го элемента (Красного), тогда он должен быть z < x, а если брать относительно 2-го (Зеленого) элемента, тогда он должен быть z > y

    Если подставить это всё в уравнение, тогда получается как-то так:
    z > y => y > x => z > x, но
    z < x


    А действительно тут может быть способ просто сделать фигуры не целостными, т.е. тот же красный элемент разделить на две элемента, значение одного больше z-index'а 3-го (Синего) элемента, а второго меньше чем в зеленого
    Ответ написан
    Комментировать
  • Как добавить данные из одного input в любой блок (по выбору: 1-ый, 2-ой, 3-ий или 4-ый)?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    HTML:
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
    
    <div class="row">
        <div class="col-lg-11" style="padding-top: 10px; padding-bottom: 10px; padding-left: 30px;">
            <input type="text" id="text" class="form-control" />
        </div>
        <div class="col-lg-1" style="padding-top: 10px; padding-bottom: 10px;">
            <input type="button" value="Append" id="append-text" class="btn btn-primary" />
        </div>
    </div>
    <div class="row">
        <div class="col-lg-3" id="container-1">
            <input type="radio" id="item-1" checked="checked" />
            1. Срочное и важное
        </div>
        <div class="col-lg-3" id="container-2">
            <input type="radio" id="item-2" />
            2. Не срочное и важное
        </div>
        <div class="col-lg-3" id="container-3">
            <input type="radio" id="item-3" />
            3. Срочное и не важное
        </div>
        <div class="col-lg-3" id="container-4">
            <input type="radio" id="item-4" />
            4. Не срочное и не важное
        </div>
    </div>


    JS:
    <script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script>
    
    <script>
        let checkedItemId = 'container-1';
        let radios = $('[id|=item]');
    
        for(let i = 0; i < radios.length; i++) {
            $('#' + radios[i].id).on('click', () => {
                if($('#' + radios[i].id).prop('checked')) {
                    for(let j = 0; j < radios.length; j++) {
                        if (i != j) {
                            $('#' + radios[j].id).prop('checked', false);
                        }
                    }
                    checkedItemId = radios[i].parentElement.id;
                    console.log(checkedItemId);
                }
            })
        }
    
        $('#append-text').on('click', () => {
            let text = $('#text').val();
            $('#text').val('');
            document.getElementById(checkedItemId).innerHTML += '<br/>' + text;
        });
    </script>
    Ответ написан
    Комментировать
  • Почему не отрисовывается компонент в Blazor?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Потому что вы сделали вот там *тыкает пальцем в экран* не правильно, нужно было сделать вот так: *кусок кода*. Вот и всё, проблема решена
    Ответ написан
    Комментировать
  • Как сделать чекбокс, переключающий другие чекбоксы?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    <input type="checkbox" class="mainCheckboxType1" id="main"> Перключить все<br>
    <input type="checkbox" class="chekboxType1" id="check-1"> 1 чекбокс
    <input type="checkbox" class="chekboxType1" id="check-2"> 2 чекбокс
    <input type="checkbox" class="chekboxType1" id="check-3"> 3 чекбокс
    <script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>


    $('#main').on('click', () => {
    	let checks = $('[id|=check]');
      let mainCheckValue = $('#main').prop('checked');
      
      for(let i = 0; i < checks.length; i++) {
      	$('#' + checks[i].id).prop('checked', mainCheckValue);
      }
    });
    Ответ написан
    Комментировать
  • Как на js правильно прописать?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    function journal_enable_stepper() {
      $('.stepper').each(function () {
        var $this = $(this);
        if ($this.data('_isEnabled')) {
          return;
        }
        $this.data('_isEnabled', true);
    
        var $input = $this.find('input[name^="quantity"]');
        var value = $input.val();
        var minimum = parseInt($input.data('minimum')) || 1;
        $this.find('.fa-angle-up').on('click', function () {
          $input.val(parseInt($input.val()) + 500);
          $input.trigger('change');
        });
        $this.find('.fa-angle-down').on('click', function () {
          if (parseInt($input.val()) > minimum) {
            $input.val(parseInt($input.val()) - 500);
            $input.trigger('change');
          }
        });
    }
    Ответ написан
  • Ошибка при подключении к существующей БД (MSSQL)?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    .UseSqlServer("Server=localdb;Database=TestConnection;Trusted_Connection=True;");


    UPD: для этого используйте NuGet пакет EntityFramework.Core.SQLServer
    Ответ написан
    Комментировать
  • Как сделать таймер/секундомер Unity?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ну вот вам таймер, или вот ещё один таймер (Да, в .Net несколько таймеров, хаха)
    Ответ написан
  • User control draw backcolor?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте через Color
    Ответ написан
    Комментировать
  • Является ли чтение Readonly свойств объекта нарушением инкапсуляции?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Если объект возвращает DTO как представление самого себя

    Как? DTO это объект, который просто описывает некую модель данных и не имею поведения (Wikipedia). Ладно, с этим всё равно, едем дальше

    нельзя менять свойства объекта из вне, это могут делать только методы объекта

    Ну это уже смотря на логику... К примеру, наведу пример из .Net, возьмите стандартный класс от Microsoft по типу Console (Класс для работы с консолью). Там же есть свойства, по типу BackgroundColor, Height, Width и т.д. Изменение размеров окна является нарушением инкапсуляции?

    То представление инкапсуляции, что вы имеете, оно опирается только на наличие модификаторов доступа public и private. Является ли инкапсуляцией наличие модификаторов доступа? Нет, потому что не было бы описано 100500 книг и статей по поводу двух модификаторов доступа. Инкапсуляция - это, в первую очередь, целостность объекта, т.е., что объект может взаимодействовать сам с собой через внутренние методы (По типу того, как вы описали).

    Но неужели объект не может меняться снаружи, или он не может меняться через публичные свойства? Если бы это было запрещено, то в конвенциях к ООП писалось бы такое ещё и жирным шрифтом, что: "НЕЛЬЗЯ ДЕЛАТЬ СВОЙСТВА ПУБЛИЧНЫМИ".

    Для примера, есть такой языка как C++ (Думаю, что вы слышали). Там, в отличии от более продвинутых языков программирования, нет большей части упрощающего функционала (Синтаксического сахара, называйте как хотите). Весь объект строится из полей и методов (С различными комбинациями модификаторов доступа). Есть ли там инкапсуляция? Да. Запрещены ли там публичные поля? Нет.

    машина машина должен решать задачи по перевозке водителя,

    А если вам скажут настроить взаимодействие двух машин? Да, тут свойства использоваться вряд ли будут, но будет ли нарушение инкапсуляции то, что другая машина будет влиять на первую? Нет. Как они будут это делать? Определённо через методы. Зачем тогда есть публичные свойства и поля?

    Класс который содержит поля - является структурой данных (без поведения). класс который содержит и структуры данных (т.е. свойства) и поведение является объектом.

    Любой класс является классом. Конкретная реализация описания класс является объектом. Структура данных (Вообще модель данных) является самым простым типом класса. Если у класса есть методы для описания поведения, то он всё равно остаётся объектом некого класса. Как выше написал уже Владимир Коротенко :
    dto являются легчайшими объектами взаимодействия с бд, они просто по своей сути не могут содержать в себе логики


    мы хотим при оплате добавить еще какое-нибудь поведение, поверх стандартного

    Наследование, ещё один принцип ООП. Если полностью закрытый класс даже для наследования (sealed) значит тут уже как не крутись, у вас ничего не получится, как бы вы не ХОТЕЛИ УСОВЕРШЕНСТВОВАТЬ функционал. Значит так задумано вышестоящим разработчиком/ами

    но как без знания объекта это сделать

    Для этого есть документации. Задумайтесь, на сколько часто вы закрываете свои классы от наследования, когда пишете код?

    Не будем же мы после каждого требования бизнеса изменять старый код.

    Будете. Будете делать всё что вам скажут, абсолютно.
    Ответ написан
    2 комментария
  • .Net Core Передача string параметра в контроллер?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    window.location.href ='/Product/Index?id=1&returnUrl=/Product?CategoryId=1&&sort=Sale&search=';


    Вот url из вашего примера, а вот url который вы хотите получить:
    Почему не приходит полностью /Product?CategoryId=1&sort=Sale&search=

    Проблема в том, что в ПРИМЕРЕ у вас после ?CategoryId=1 идёт два знака &. Поправьте это
    Ответ написан