Хорошо, в общем, я хочу разместить на странице немного javascript, который каким-то образом присоединяет некоторый глобальный слушатель событий, который может обнаруживать и делать что-то, если сделан запрос ajax (без непосредственного вызова из вызова), независимо откак осуществляется вызов AJAX.
Я понял, как это сделать с помощью jquery - если запрос ajax выполняется с помощью jquery.Вот пример кода для этого:
$.post(
// requested script
'someScript.php',
// data to send
{
'foo' : 'bar',
'a' : 'b'
},
// receive response
function(response){
// do something
}
); // .post
// global event listener
$(document).ajaxSend(
function(event,request,settings){
alert(settings.url); // output: "someScript.php"
alert(settings.data); // output: "foo=bar&a=b"
}
);
С этим кодом, независимо от того, где / как я вызываю $ .post (..), сработает глобальный прослушиватель событий.Это также работает, если я использую $ .get или $ .ajax (любые методы jquery ajax), независимо от того, как / когда я его вызываю (прикрепляется как onclick, при загрузке страницы, как угодно).
Однако я хочу иметь возможность расширять этот слушатель для запуска независимо от того, какая среда js используется, или даже если никакая структура не используется.Так, например, если бы я также имел на странице следующий код (универсальный код ajax из w3schools):
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","test.txt",true);
xmlhttp.send();
}
А потом у меня на некоторыхПри случайном соединении вызова этой функции одним щелчком мой глобальный слушатель событий ajax должен иметь возможность также обнаруживать этот запрос.Я добавил этот код на свою страницу и прикрепил его к щелчку произвольной ссылки (да, сам код работает), но приведенный выше код jquery «глобальный прослушиватель событий» не смог обнаружить этот вызов.
Я сделал еще несколько копаний, и я знаю, что в принципе могу сохранить объект во временном объекте и перезаписать текущий объект объектом-оберткой, который вызовет указанную функцию, а затем вызовет временную функцию, но этотребует, чтобы я заранее знал, какой исходный объект создается / используется.Но я не всегда буду знать, что раньше ...
Так ... это возможно?Есть ли какой-нибудь способ обнаружить ajax-запрос get / post, независимо от того, был ли он сделан с универсальным объектом или из фреймворка xyz?Или мне просто нужно будет создать дублирующий код для обработки каждой среды, а также заранее знать, какие объекты / объекты ajax создаются / используются?
edit:
Я забыл упомянутьчто этого недостаточно, чтобы обнаружить, что запрос произошел.Мне также нужно захватить данные, отправляемые в запросе.Ссылка, приведенная в комментариях ниже, поможет выяснить, был ли сделан запрос «а», но не получить отправленные данные.ps - ответ, приведенный в ссылке ниже, не очень понятен, по крайней мере, для меня в любом случае.