Как я могу получить, что Ax ios отправляет запрос? - PullRequest
0 голосов
/ 31 марта 2020

Это простая вещь, которую я хочу достичь (Простой Ajax Запрос. Я использую Топор ios для этого.)

Это похоже на то, когда пользователь нажимает на кнопка ajax запрос запускается, пока запрос обрабатывается или пока он не завершит запрос, я хочу отключить кнопку (или что-то еще, например, пользователь не может взаимодействовать с интерфейсом или показывать пользователю индикатор выполнения) . см. комментарий к коду, вы поймете, что я действительно хочу сказать.

В Ax ios метод get работает отлично, см. код ниже

axios.get(url, {
        onDownloadProgress: function (progressEvent) {
            // for get method its working perfectly
            // ajax is processing
            // i can disable the button
        },
        onUploadProgress: function (evt) {
            // this event method never fired
        }
    }).then(res => {
       // ajax is finished
       // i can enable the button again
    })

Но в методе post это не так t работа - теперь, что я могу сделать для этого

axios.post(url, {
        onDownloadProgress: function (progressEvent) {
            // this event method never fired
        },
        onUploadProgress: function (evt) {
            // this event method never fired
        }
    }).then(res => {
       // ajax is finished
       // i can enable the button again
    })

Без топора ios его работа отлично

    let xml = new XMLHttpRequest();

    let token = document.querySelector('meta[name="_token"]').getAttribute('content');

    xml.open("POST", "/test");
    xml.setRequestHeader("X-CSRF-TOKEN", token);


    xml.addEventListener('progress', function(evt) {
            // ajax is processing
            // i can disable the button
    });

    xml.addEventListener("load", function(evt){
        // ajax is finished
       // i can enable the button again
    });
    xml.send();

Примечание: я использую laravel основа

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы должны использовать метод post из ax ios следующим образом:

axios.post(path, data, options) 

В вашем случае вы передаете объект параметров вместо объекта данных для запроса POST. Решением было бы передать пустой объект в виде данных, если вы не хотите отправлять что-либо с вашим запросом:

axios
  .post(
    url,
    {},
    {
      onDownloadProgress: function(progressEvent) {
        // ...
      },
      onUploadProgress: function(evt) {
        // ...
      }
    }
  )
  .then(res => {
    // ...
  });

2 голосов
/ 31 марта 2020

Вот рабочий пример, когда топор ios делает пост-запрос. Функция onUploadProgress срабатывает всякий раз, когда вы передаете данные в теле ...

axios({
  url: "https://jsonplaceholder.typicode.com/users",
  method: "POST",
  data: {
    username: 'Hello',
    password: 'World'
  },
  onDownloadProgress: function(progressEvent) {
    console.log("___ Document loading ____");
  },
  onUploadProgress: function(evt) {
    console.log('This is the event', evt); // Need to stream
  }
}).then(res => {
  console.log("___ Document loaded ___");
  console.log(res);
});

Здесь вы можете найти мой пример на CodeSandBox

...