Heim  >  Fragen und Antworten  >  Hauptteil

JS – Eine XMLHttpRequest abfangen und eine Funktion auslösen

Ich möchte nur eine Funktion basierend auf dem Senden einer bestimmten XMLHttpRequest auslösen. Ich muss an der Anfrage nichts ändern oder etwas hinzufügen – ich löse einfach eine andere Funktion in meiner Codebasis aus. Die Anfrage wird von der Website gesendet, die meinen JS-Code einbettet. Ich habe keine Kontrolle über die gesamte Website. Ich habe den Interceptor so eingestellt, dass er für alle Anrufe funktioniert, aber ich weiß nicht genug darüber, um ihn anhand der folgenden Anforderungen einzugrenzen.

Required - If the Request URL contains get-users
Required - If the Status Code: 200 
Optional - If the Request Method: GET

Ich bin mir nicht sicher, ob ich send und send.call verwenden soll.

(function (send) {
        XMLHttpRequest.prototype.send = function (data) {
          console.log('Request', this);
          // If call url contains "get-users" && status code = 200 && possibly if the request method = get
          // {
          //   MyFunction()
          // }
          send.call(this, data);
        };
      })(XMLHttpRequest.prototype.send);

P粉314915922P粉314915922179 Tage vor405

Antworte allen(1)Ich werde antworten

  • P粉276876663

    P粉2768766632024-04-04 12:24:48

    您需要添加 if 条件来检查请求 URL 是否包含“get-users”且状态码是否为 200。

    像下面的代码一样:-

    (function (send) {
      XMLHttpRequest.prototype.send = function (data) {
        console.log('Request', this);
    
        this.onreadystatechange = function () {
          if (this.readyState === 4 && this.status === 200 && this.responseURL.includes('get-users')) {
            MyFunction();
          }
        };
    
        send.call(this, data);
      };
    })(XMLHttpRequest.prototype.send);

    Antwort
    0
  • StornierenAntwort