Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 启动ajax调用observer并侦听特定url以获取url参数_Javascript_Jquery - Fatal编程技术网

Javascript 启动ajax调用observer并侦听特定url以获取url参数

Javascript 启动ajax调用observer并侦听特定url以获取url参数,javascript,jquery,Javascript,Jquery,我在另一个网站中插入了一个按钮,点击它就会触发一个带有url的ajax get请求,其中包含一些url参数。让我们这样说: 得到 有没有办法在//此处上添加一个调用观察者,以便只观察特定的url(类似https://example.com/search/*)一旦我得到结果,它就会停止观察 最后,我可以访问参数值 完全虚构的情景: 我尝试了以下答案,但没有成功: $(document).ready(function() { $('#myBtn').click(function() {

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

得到

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

最后,我可以访问参数值


完全虚构的情景:


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

$(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);
        }
    }
}

这对我不管用。我在问题中添加了我的代码。也许是因为该网站没有使用jquery发出ajax请求,我添加了一个使用纯javascript的示例,希望能有所帮助。我想你误解了我的意思。我不是自己做ajax,我只是用我创建的按钮触发网页来做ajax。我试图观察网页请求,而不是我正在做的请求。还是我错了?你应该提到问题中的所有细节。您没有提到您使用什么进行ajax调用。我说“我正在另一个网站中注入脚本”,并试图观察到:/
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);
        }
    }
}