Jak wykryc jezeli zadanie Ajax zostalo ukonczone?

0

Witam,

Musze napisac kod w vanilla Javascip, ktory sprawdza wszystkie zadania Ajax czy sie ukonczyly. Chodzi mi nie tylko o Ajaxy wyslane z jQuery, musze sprawdzic wszystkie. Jakis pomysl jak to zrobic w JS, nie w jQuery?

0

Co to znaczy zadanie ajax się ukończyło?

0

W jaki sposób to żądanie uruchamiasz?

0

Zadan jest dosc sporo wiekszosc sa wysylane przez jQuery czyli $.ajax() ale mam tez kilka ajaxow wysylanych przez vanilla JS XHR.

0
poniatowski napisał(a):

Zadan jest dosc sporo wiekszosc sa wysylane przez jQuery czyli $.ajax() ale mam tez kilka ajaxow wysylanych przez vanilla JS XHR.

Czemu nie chcesz użyć fetch()?

0

@TomRiddle: Mozesz mi podac przyklad ? Na razie przerabiam cos takiego, ale ponoc to chyba i tak nie dziala na kazdej przegladarce i moze nie lapac kazdego requestu.

var _send = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
    var pointer = this;
    var intervalId = window.setInterval(function(){
        if(pointer.readyState == 4 && pointer.status == 200) {
           // wykonaj kod.
            return;
        }

        clearInterval(intervalId);

    }, 1);
    return _send.apply(this, [].slice.call(arguments));
};

0
poniatowski napisał(a):

@TomRiddle: Mozesz mi podac przyklad ? Na razie przerabiam cos takiego, ale ponoc to chyba i tak nie dziala na kazdej przegladarce i moze nie lapac kazdego requestu.

Nie, ale mogę podać Ci coś co znalazłem w 3 sekundy w google, po tym jak wpisałem "fetch js": https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

0

Wow, nie wiedzialem ze istnieje cos takiego jak fetch. Niezle, podoba mi sie to! Problem jest taki, ze nie bede teraz przebudowywal wszsytkiego na fetch. Nie mam na to czasu. Tych requestow jest naprawde duzo. Ja musze tylko sprawdzic czy request sie wykonal i tyle.

0
poniatowski napisał(a):

Wow, nie wiedzialem ze istnieje cos takiego jak fetch. Niezle, podoba mi sie to! Problem jest taki, ze nie bede teraz przebudowywal wszsytkiego na fetch. Nie mam na to czasu. Tych requestow jest naprawde duzo. Ja musze tylko sprawdzic czy request sie wykonal i tyle.

Wykonał tzn? Mógł np zostać odrzucony przez problemy hardware'owe (np masz urwany kabel od neta lub nie dostać go od swojego dostawcy); request mógł wyjść ale nie trafił do swojego servera; mógł trafić, ale na nieistniejący zasób (np 404); mógł trafić na istniejący zasób, ale był niepoprawny i został odrzucony (np 422); mógł zostać przyjęty do przetwarzania ale wystąpił jakiś problem na serverze (np 500).

A to tylko niektóre powody "nie udania się" requestu - są też bardziej specyficzne, np masz niepoprawny certyfikat ssl.

Jak widzisz, musisz bardziej sprecyzować swoje pytanie odnośnie: "wykonał się i tyle".

0

Fakt, nie dopisalem ze request ma wykonac sie i zwrocic pozytywna odpowiedz z serwera 200.

0

Probowalem z onreadystatechange oraz onload i tez nic.

0
poniatowski napisał(a):

Probowalem z onreadystatechange oraz onload i tez nic.

Co to znaczy "też niż"? Callback się nie wywołał? Wywołał się ale w złym momencie?

Może wpisz w google "js xmlrequest success"? Ja znalazłem odpowiedź na stackoverflow.com w 3 sekundy.

1

@poniatowski: wszystko masz w dokumentacji. Dla jQuery masz event complete natomiast w XMLHttpRequest jest loadend
http://api.jquery.com/jquery.ajax/
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/loadend_event

1 użytkowników online, w tym zalogowanych: 0, gości: 1