Javascript 启动ajax调用observer并侦听特定url以获取url参数
我在另一个网站中插入了一个按钮,点击它就会触发一个带有url的ajax get请求,其中包含一些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(类似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);
}
}
}