javascript - 启动ajax调用observer并监听特定url获取url参数

标签 javascript jquery

<分区>

我在另一个网站中插入了一个按钮,点击后,它会触发带有 url 的 ajax get 请求,其中包含一些 url 参数。让我们这样说:

GET https://example.com/search/test=1&hello=world&session=123

$('#myBtn').click(function() {
    // Here

    funcForTriggeringAjax()
});

有没有办法在 //Here 上添加一个调用观察者以开始只观察特定的 url(类似于 https://example.com/search/*) 一旦我得到结果,它就会停止观察?

这样到最后,我就可以访问参数值了。


完全是虚构的场景:

$('#myBtn').click(function() {
    startAjaxObserver()

    funcForTriggeringAjax()
});

startAjaxObserver() {
   observingStarted(x, result) {
       var url = "https://example.com/search/*";
       if (x.url == url) {
           console.log(result['session'])
           stopObservingAjax()
       }
   }
}

我尝试了以下答案,但没有成功:

$(document).ready(function() {
   $('#myBtn').click(function() {
      $(document).ajaxSuccess(responseHandler());
   });
})

function responseHandler() {
  console.log("X") // comes here
  return function(event, xhr, settings) {
      console.log('Y') // doesn't come here

      if (settings.url == 'desired-url' && active) {
          // do your thing
          active = false;
      }
  }
}

最佳答案

拦截电话

jQuery

function responseHandler() {
  var active = true;  
  return function(event, xhr, settings) {
      if (settings.url == 'desired-url' && active) {
          // do your thing
          active = false;
      }
  }
}
$(document).ajaxSuccess(responseHandler());

自定义实现

function ajax(url, method, data) {
    makeRequest(url, method, data, function(err, res) {
        afterAjax(url, res);
    });
}

function makeRequest(url, method, data, callback) {
    // your implementation of executing the request
    // assuming your implementation returns either error or response
    if(error) {
       callback(error);
    } else {
       callback(null, response); // send the response back
    }
}

var afterAjaxStack = {};

afterAjaxStack.urlCheck = function(url, res) {
    if (url === 'desired-url') {
        // do your stuff
        delete afterAjaxStack.urlCheck;
    }
}
// put more functions on the stack if you want

afterAjax(url, res) {
    for (var property in afterAjaxStack) {
        if (afterAjaxStack.hasOwnProperty(property)) {
            afterAjaxStack[property](url, res);
        }
    }
}

关于javascript - 启动ajax调用observer并监听特定url获取url参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45254991/

相关文章:

javascript - 带有 HTTPS 请求的 Node.JS UnhandledException

javascript - 自动调整具有固定宽度的div的字体大小

javascript - 模糊事件不适用于下拉菜单

javascript - jQuery 如何杀死一个已创建的 Div?

javascript - 使用现有数据格式化新数组 - 问题

javascript RegExp 不过滤数字

javascript - 你如何使用 Meteor Iron Router 获取当前路由的名称?

javascript - 当代码包装在函数中时如何定义全局类型

jquery - 根据光标在单独元素中的位置旋转元素

jquery - 滑动 div 导航