Скрипт Laravel PHP, связанный с диалогом

#javascript #php #ajax #laravel

#javascript #php #ajax #laravel

Вопрос:

Я новичок в веб-разработке и Laravel. Я создаю локальное веб-приложение, которое будет работать на одном ПК с использованием Windows. У меня есть скрипт, который считывает данные с устройства камеры. Этот скрипт запускается, когда пользователь нажимает кнопку. эта кнопка открывает диалоговое окно и создает вызов ajax для получения данных из php-скрипта.

Что мне здесь нужно, так это создать кнопку отмены в диалоговом окне, которая завершит вызов php-скрипта.

Что происходит до сих пор? Я создаю вызов ajax с помощью второй кнопки отмены. Но этот вызываемый PHP-скрипт никогда не выполняется, пока я не отключу другой скрипт вручную (выключив камеру).

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

вот сценарий до сих пор:

   <script>
    var updateBtn = document.getElementById("update");
    var favDialog = document.getElementById("favDialog");
    var cancelBtn = document.getElementById("cancel");
    updateBtn.addEventListener("click", function onOpen() {
      favDialog.showModal();
      $.ajax({
        type: 'GET',
        url: '/getBar',
        data: '_token = <?php echo csrf_token() ?>',
        success: function(data) {
          window.location.assign("/view?qr="   data);
        }
      });
    });

    cancelBtn.addEventListener("click", function onOpen() {      
      $.ajax({
        type: 'GET',
        url: '/closeApp',
        data: '_token = <?php echo csrf_token() ?>',
        success: function() {}
      });
    });
  </script>
 

РЕДАКТИРОВАТЬ: вызов ajax abort() работает.

Ответ №1:

Я думаю, что вы ищете abort() , предполагая, что вы используете jQuery 3.x .

Большинство методов jQuery Ajax возвращают объект XMLHttpRequest (или эквивалентный).

Смотрите документацию:

  • прервать. Если запрос уже был отправлен, этот метод прервет запрос
     <script>
      var updateBtn = document.getElementById("update");
      var favDialog = document.getElementById("favDialog");
      var cancelBtn = document.getElementById("cancel");
    
      var request = null;
      updateBtn.addEventListener("click", function onOpen() {
        favDialog.showModal();
        request = $.ajax({
          type: 'GET',
          url: '/getBar',
          data: '_token = <?php echo csrf_token() ?>',
          success: function(data) {
            window.location.assign("/view?qr="   data);
          }
        });
      });
    
      cancelBtn.addEventListener("click", function onOpen() {
        if (request != null) {
          request.abort();
        }
      });
    </script>
     

Комментарии:

1. Это не работает. Я попробовал, и запрос все еще обрабатывается. и даже я все еще не могу отправить другой запрос.

2. @Antoun пожалуйста, отметьте его как принятый ответ, чтобы он мог помочь входящим людям с той же проблемой. Спасибо