Гаразд, отже, в основному я хочу мати трохи 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), незалежно від того, як / коли я їх викликаю (додається як натискання, при завантаженні сторінки, що завгодно).
Однак я хочу мати можливість розширити цей прослуховувач для запуску незалежно від того, який 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();
}
І тоді я на якому - то випадковому зв'язати OnClick виклик цієї функції, мій глобальний Аякса слухач подій повинен мати можливість також виявити цей запит. Ну, я додав цей код на свою сторінку і прикріпив його до onclick випадкового посилання (так, сам код працює), але наведений вище код jquery "прослуховувач глобальних подій" не вдалося виявити цей виклик.
Я ще трохи копав, і знаю, що в основному можу зберегти об'єкт у тимчасовий об'єкт і переписати поточний об'єкт об'єктом "обгортка", який викликатиме визначену функцію, а потім викликатиме функцію temp, але для цього потрібно знати наперед час створення / використання оригінального об'єкта. Але я не завжди буду знати, що раніше часу ...
Отже ... чи можливо це? Чи є спосіб виявити зроблений запит ajax get / post, незалежно від того, чи було це зроблено із загальним об’єктом, або з фреймворку xyz? Або мені просто доведеться створити повторюваний код для обробки кожного фреймворку, а також заздалегідь знати, які об’єкти (файли) ajax створюються / використовуються?
редагувати:
Я забув згадати, що недостатньо виявити, що запит стався. Мені також потрібно отримати дані, що надсилаються у запиті. Посилання в коментарях нижче допоможе з’ясувати, чи було зроблено запит "a", але не отримати дані. ps - відповідь, надана за посиланням нижче, не дуже зрозуміла, принаймні для мене в будь-якому випадку.