Maison  >  Article  >  interface Web  >  La bonne façon de transmettre des paramètres à la fonction de rappel ajax

La bonne façon de transmettre des paramètres à la fonction de rappel ajax

不言
不言original
2018-07-02 16:44:493068parcourir

Cet article présente principalement la méthode correcte de transmission des paramètres de la fonction de rappel ajax. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent se référer à

La méthode correcte de transmission des paramètres de. Fonction de rappel ajax. De nombreux amis ont l'habitude d'écrire de manière incorrecte.

Les méthodes d'attribut peuvent prendre des paramètres :

function ClassX(name) { 
this.name = name; 
ClassX.prototype.show = function (param) { 
alert(this.name + " " + param); 
}; 
} 
var o = new ClassX("name"); 
o.show("param");//name param

Cependant, bien que la référence soit définie directement dans la signature de la fonction, si vous n'appelez pas o.show('param') vous-même, , mais lorsqu'il est transmis via d'autres rappels de fonction, cela peut ne pas fonctionner car d'autres ne vous transmettent pas nécessairement ce paramètre lors de l'appel de cette méthode, comme lors de l'utilisation d'ajax

request.onreadystatechange=function (param){. ..}
ou
request.onreadystatechange=callBack;function callBack(param){...}

ne fonctionnera pas, car à ce moment, ajax ne peut tout simplement pas Le paramètre param n'est pas transmis à vous. La méthode correcte est la suivante :

//request.onreadystatechange = orgEval;//错误作法 

//request.onreadystatechange = function (request, pOrgName) {//错误作法 
// orgEval(request, pOrgName); 
//}; 

//... 
request.onreadystatechange = function () {//正确作法 
orgEval(request, pOrgName);//在匿名函数内调用回调实现,并直接传入参数,这里用到了JavaScript的闭包性质 
}; 
//... 

function orgEval(req, orgName){ 
//... 
}

De cette façon, la fonction est implémentée en appelant le rappel dans la fonction anonyme et les paramètres sont transmis directement.

ajax transmet les paramètres à la fonction de rappel de onreadystatechange

J'ai commencé à apprendre ajax ces derniers jours, et quand je faisais une page de test, j'ai eu un rappel fonction qui a transmis des paramètres à XMLHttpRequest.onreadystatechange cette demande. Après avoir cherché Baidu, j'ai découvert que beaucoup de gens en parlaient. La méthode que j'ai trouvée est probablement la suivante :

xmlHttp.onreadystatechange=function(){callback(a,b);};

Dans laquelle deux paramètres, a et b, sont transmis.

Plus tard, j'ai découvert une méthode moi-même. Il doit y avoir beaucoup de gens qui connaissent la méthode, mais je ne l'ai pas trouvée sur Baidu, alors je vais l'écrire ici et en faire la promotion.

xmlHttp.a=a;
xmlHttp.b=b;
xmlHttp.onreadystatechange=callback;
.
.
function callback()
{
    if(this.readyState==4)
    {
        a=this.a;
        b=this.b;
    .
    }
}

C'est-à-dire, ajoutez deux attributs à l'objet xmlHttp et utilisez-le directement pour appeler ces deux attributs dans la fonction de rappel.

De plus, permettez-moi de parler de ma propre expérience. Il est préférable d'écrire xmlHttp en tant que variable globale. Au début, j'ai trouvé que certaines requêtes n'atteignaient pas leur objectif. Plus tard, j'ai découvert que xmlHttp était écrit dans une fonction. Lorsque cette fonction avait fini de s'exécuter, le cycle de vie de xmlHttp se terminait également. De cette manière, certaines requêtes sont implémentées avant la fin du cycle de vie et certaines requêtes disparaissent.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Introduction aux requêtes d'obtention et de publication Ajax

À propos de la méthode de traversée ajax des documents XML

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn