2010-06-15 4 views
2

Comment puis-je utiliser javascript pour envoyer un message à sens unique à php? Je voudrais obtenir les informations du navigateur de javascript et juste l'envoyer à php en arrière-plan. Je sais que je peux en avoir un peu avec php, mais je préfère utiliser javascript. Y at-il un moyen de le faire sans un cadre comme jquery?javascript envoyer un message à sens unique à php

+1

Oui c'est une façon de le faire sans un cadre, mais vous aurez besoin de faire un XMLHTTPRequest conçu à la main pour le faire fonctionner à travers le navigateur. Plus d'infos: http://stackoverflow.com/questions/tagged/ajax – Matias

Répondre

0

Oui, vous pouvez le faire avec quelque chose comme ceci:

function xmlhttpPost(strURL) { 
    var xmlHttpReq = false; 
    var self = this; 
    // Mozilla/Safari 

    if (window.XMLHttpRequest) { 
     self.xmlHttpReq = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     // IE 
     self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    self.xmlHttpReq.open('POST', strURL, true); 
    self.xmlHttpReq.onreadystatechange = function() { 

     if (self.xmlHttpReq.readyState == 4) { 
      alert('Here goes something'); 
      self.xmlHttpReq.send('browser info here'); 
     } 
    } 
} 

Ceci enverra « info navigateur ici » comme POST dans la page php vous passez à la fonction comme URL. Je ne l'ai pas testé si

+0

vous ne devriez pas utiliser '" Microsoft.XMLHTTP "' - voir par exemple http://blogs.msdn.com/b/xmlteam/archive/2006/ 10/23/en utilisant-la-bonne-version-de-msxml-in-internet-explorer.aspx; Je suggère d'écrire un petit wrapper comme http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/xmlhttprequest.js afin que vous puissiez utiliser 'new XMLHttpRequest()' cross-browser; aussi, votre utilisation de 'self' est douteuse car' this' sera 'window' si' xmlhttpPost' est appelée sans 'new' – Christoph

+0

Je n'aime pas mettre du code ici qui résoudra tous les problèmes, plutôt pointer les gens dans la bonne direction . J'ai écrit ce code de mémoire et je l'ai utilisé une fois, il y a longtemps dans un de mes premiers projets et ça a fonctionné à ce moment-là ... Je n'ai jamais dit ça preuve d'eau puisque je l'ai écrit de mémoire. Je préférerais jQuery sur cette approche quand même. – realshadow

0

Vous devez soumettre une requête AJAX à un script PHP. Oui, vous pouvez le faire sans utiliser de cadre, mais je ne le conseillerais pas.

0

Vous devez faire un appel AJAX à une page PHP, de préférence en utilisant POST. Toutes les données que vous souhaitez envoyer doivent être envoyées avec la demande.

Je recommande d'utiliser un cadre tel que jQuery, mais si vous insistez sur l'utilisation de JavaScript brut, vous voulez rechercher XMLHttpRequest.

0
// fix for older IE versions 
// see http://blogs.msdn.com/b/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx 
if(typeof window.XMLHttpRequest === 'undefined' && 
    typeof window.ActiveXObject === 'function') { 
    window.XMLHttpRequest = function() { 
     try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {} 
     try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {} 
     return new ActiveXObject('Microsoft.XMLHTTP'); 
    }; 
} 

function postData(url, data, errhandler) { 
    var req = new XMLHttpRequest; 
    req.onreadystatechange = function() { 
     if(this.readyState === 4 && this.status !== 200 && errhandler) 
      errhandler(this); 
    }; 
    try { 
     req.open('POST', url, true); // async post request 
     req.send(data); 
    } 
    catch(e) { 
     if(errhandler) 
      errhandler(req); 
    } 
} 
Questions connexes