2010-09-04 5 views
0

Existe-t-il un moyen plus élégant de transmettre une variable après avoir effectué une requête Ajax (JS-> PHP) autre que d'imprimer les résultats?Passage d'une variable à un rappel après une requête Ajax

L'impression peut être un peu désordonnée et n'offre pas non plus beaucoup de flexibilité en termes de valeur de retour (par exemple, difficile de transmettre des objets).

En outre, j'avais cet espace aléatoire qui a été imprimé dans un de mes rappels de demande Ajax et je ne pouvais pas comprendre d'où il venait. Ce problème n'existerait pas avec le passage de variables sérialisées ou quelque chose comme ça, non?

Merci d'avance!

Répondre

0

attribut Pass forme {url: "", méthode: "", les données: {...}, rappel: function() {}}

En rappel, vous pouvez faire beaucoup de choses, google "Fermetures javascript".

Espérons que cela aide.

var ajax=function(){ 
    try{ 
    var xml  =new XMLHttpRequest(); 
    var args  =arguments; 
    var context =this; 
    var multipart =""; 

    xml.open(args[0].method,args[0].url,true); 

    if(args[0].method.search(/post/i)!=-1){ 
     var boundary=Math.random().toString().substr(2); 
     xml.setRequestHeader("content-type","multipart/form-data; charset=utf-8; boundary="+boundary); 
     for(var key in args[0].data){ 
     multipart+="--"+boundary+"\r\ncontent-Disposition: form-data; name="+key+"\r\ncontent-type: application/octet-stream\r\n\r\n"+args[0].data[key]+"\r\n"; 
     } 
     multipart+="--"+boundary+"--\r\n"; 
    } 

    xml.onreadystatechange=function(){ 
     try{ 
     if(xml.readyState==4){ 
      context.txt=xml.responseText; 
      context.xml=xml.responseXML; 
      args[0].callback(); 
     } 
     } 
     catch(e){} 
    } 

    xml.send(multipart); 
    } 
    catch(e){} 
} 

Si vous voulez récupérer réponse que vous pouvez utiliser ceci:

var response={}; ajax.call(response,{...args...}) 

et vous pouvez récupérer toutes les données par response.txt ou response.xml.

Questions connexes