Ok, donc, fondamentalement, je veux avoir un peu de javascript sur une page qui en quelque sorte s'attache à certains type de l'écouteur d'événement qui permet de détecter et de faire quelque chose si une requête ajax (sans possibilité d'appeler directement à partir de l'appel), indépendamment de la façon dont l'appel ajax est faite.
J'ai compris comment le faire avec jquery - si la requête ajax est fait par jquery. Voici un exemple de code:
$.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"
}
);
Avec ce code, peu importe où/comment j'appelle $.la poste(..), le mondial de l'écouteur d'événement de déclenchement. Il fonctionne aussi si j'utilise $.obtenir ou $.ajax (tout jquery ajax méthodes), peu importe comment/quand je l'appelle (jointe à un onclick, au chargement de la page, peu importe).
Cependant, je veux être en mesure d'étendre cet écouteur pour déclencher indépendamment de ce que js cadre est utilisé, ou même si aucun cadre est utilisé. Si, par exemple, je devais aussi avoir sur une page le code suivant (générique ajax code de 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();
}
Et puis j'ai sur certains aléatoire lien un onclick appel à cette fonction, mes ajax écouteur d'événement doit être en mesure de également de détecter cette demande. Eh bien, j'ai ajouté ce code sur ma page et l'ont attaché à un lien menant onclick (oui, le code lui-même), mais le jquery "mondial de l'écouteur d'événement" code ci-dessus n'a pas pu détecter cet appel.
J'ai fait un peu plus de creuser et je sais que je peux fondamentalement enregistrer l'objet d'une température de l'objet et de remplacer l'actuel objet avec un "wrapper" de l'objet qui va appeler une fonction spécifiée, puis d'appeler la temp de la fonction, mais cela m'oblige à connaître à l'avance de l'objet d'origine en cours de création/d'occasion. Mais je ne le sait pas toujours que l'avance de temps...
Alors...est-ce possible? Est-il possible de détecter un ajax get/post demande a été faite, indépendamment du fait qu'il a été fait avec un objet générique ou de xyz cadre? Ou suis-je tout simplement allez devoir faire dupliquer le code pour gérer chaque cadre et de connaître à l'avance l'ajax d'objet(s) en cours de création/d'occasion?
edit:
J'ai oublié de mentionner qu'il ne suffit pas de détecter qu'une demande avait été faite. J'ai aussi besoin de capturer les données envoyées dans la requête. Le lien fourni dans les commentaires ci-dessous aidera à savoir si "une" demande a été faite, mais de ne pas obtenir les données envoyées. p.s. - la réponse dans le lien ci-dessous n'est pas très clair, au moins pour moi, de toute façon.