2009-03-20 8 views
7

Je suis en train de créer un bookmarklet qui, après avoir cliqué, demanderait des informations à l'utilisateur (une url et quelques autres champs dans ce cas), puis envoyer ces données à une page php sur mon serveur puis affichez le résultat.Ajax appel de Bookmarklet

Je voudrais faire un appel Ajax pour cela afin que je ne redirige pas vers la nouvelle page, juste obtenir les données mais je suppose que je serais confronté à la limitation "Politique d'origine" de l'Ajax ... existe-t-il un moyen connu de faire la même chose?

En outre, quelle serait la meilleure façon de transmettre les paramètres? J'ai déjà un mécanisme en place pour recevoir les paramètres sous la forme d'un message d'un formulaire ... est-ce que je pourrais juste réutiliser cela?

Répondre

6

Vous pouvez définir un bookmarklet en créant un signet et en ajoutant le code ci-dessous dans l'emplacement, mais selon same origin policy limitation, cela ne fonctionnera que lorsque l'onglet actuel est au même emplacement, ici www.google.com.

Si j'ai bien compris vos besoins, cela devrait convenir à votre problème.

var request = new XMLHttpRequest(); 
request.open("GET", "http://www.google.com", true); 
request.onreadystatechange = function() { 
    var done = 4, ok = 200; 
    if (request.readyState == done && request.status == ok) { 
    if (request.responseText) { 
     alert(request.responseText); 
    } 
    } 
}; 
request.send(null); 

Je ne sais pas si le POST fonctionnerait.

1

Vous ne serez pas en mesure de faire un post, mais un GET fonctionnera très bien. Si vous utilisez quelque chose comme jQuery, il créera simplement une balise de script avec une URL src qui enverra les données que vous cherchez à soumettre.

Vous devrez retourner les données de style JSON.

Voir: http://docs.jquery.com/Ajax/jQuery.getJSON

Sinon, votre bookmarklet pourrait créer un iframe sur la page, et qui pourrait travaillez-vous de soumettre les données (vous pouvez utiliser après alors) si vous ne cherchez pas à communiquer entre le iframe et la page elle-même, mais utilisez simplement l'entrée de l'utilisateur pour soumettre.

Questions connexes