搜尋

首頁  >  問答  >  主體

JS - 攔截某個 XMLHttpRequest 並觸發一個函數

我只是想根據發送的某個 XMLHttpRequest 來觸發一個函數。我不需要更改或添加任何內容到請求中 - 只需觸發我的程式碼庫中的另一個函數即可。該請求是由嵌入我的 JS 程式碼的網站發送的。我無法控制整體網站。我已經讓攔截器適用於所有調用,但我對它了解不夠,無法根據以下要求縮小範圍。

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

不確定我是否應該使用 send 和 send.call。

(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粉314915922259 天前538

全部回覆(1)我來回復

  • 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);

    回覆
    0
  • 取消回覆