2009-05-21 10 views
2

Je me suis inscrit (payant) pour la recherche de site Google. Ils ont moi une url d'une sorte de service web où je peux envoyer une requête à elle, il recherche mon site, et il renvoie le XML des résultats de recherche. Eh bien, je suis en train de charger ce XML via Ajax à partir d'une page sur mon site mais je ne peux pas. Je peux charger à partir de n'importe laquelle de mes pages sur mon domaine, donc je suppose que c'est parce que le XML est sur le domaine de Google. Donc, il doit y avoir un moyen de le charger, je ne pense pas qu'ils m'auraient donné l'URL si je ne pouvais rien faire avec lol. Est-ce que quelqu'un sait comment faire ça?Ajax: Charger du code XML à partir d'un domaine différent?

Merci!

MISE À JOUR:

c'est ce que la page dit sur Google qui m'a donné le XML:

Comment obtenir XML

Vous pouvez obtenir des résultats XML pour votre moteur de recherche en remplaçant query + terms avec votre requête dans cette URL:

http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=google-csbe&output=xml_no_dtd&q=query+terms

Où MY_UNIQUE_KEY = ma clé unique.

Répondre

3

Vous ne pouvez pas charger des fichiers externes avec AJAX. Cependant, vous pouvez configurer un fichier sur votre propre serveur qui rend le contenu disponible sur votre serveur. Par exemple en PHP, vous pouvez écrire un fichier googlexml.php:

<?php 
@readfile("http://www.google.com/cse?cx=MY_UNIQUE_KEY&client=googlecsbe&output=xml_no_dtd&q=query+terms"); 
?> 

Et vous pouvez alors accéder qu'avec AJAX. Je ne suis pas sûr que les conditions d'utilisation de Google vous permettent de le faire, mais si c'est le cas, alors c'est une option.

+1

Bonne suggestion. Notez que cela ne fonctionne que si les wrappers fopen sont activés en php, ce qui n'est pas toujours le cas pour des raisons de sécurité ... http://au.php.net/manual/fr/filesystem.configuration.php#ini. allow-url-fopen – Stobor

+0

J'ai effectivement eu cette idée la nuit dernière, je pensais cURL cependant, j'ai essayé votre suggestion et c'est juste de retourner une page blanche. –

1

Google n'offre-t-il pas la possibilité de transférer une adresse DNS vers l'adresse IP de votre service, en la repliant dans votre domaine? De cette façon, vous pouvez le faire dans AJAX

googleAlias.mydomain.com 

Google devrait soutenir cela, mais je ne sais pas avec certitude. J'imagine qu'ils feraient de même avec GMail et le courrier externe.

Enlève votre cross-domain javascript Questions

modifier Je développé ci-dessous et un autre utilisateur a obligeamment ce devrait fonctionner (grâce Stobor)

Eh bien, pour obtenir mon courrier de l'entreprise dans GMail, si je rappelez-vous, je devais changer l'enregistrement MX sur mon DNS pour pointer vers une adresse IP google. Si Google le permet, vous pouvez ajouter un enregistrement A à votre domaine. Ainsi, une requête AJAX envoyée à foo.votredomaine.com est la même que search.google.com ou autre. Google doit reconnaître les demandes de votre nom d'hôte dans l'enregistrement A et dire "Oh oui, c'est moi, au nom de mon client"

+0

I Je ne sais pas, pour vous dire la vérité ce que vous avez dit est sur ma tête. –

+0

Eh bien, si je me souviens bien, je devais changer l'enregistrement MX de mon DNS pour que je puisse accéder à un IP de Google. Si Google le permet, vous pouvez ajouter un enregistrement A à votre domaine. Ainsi, une requête AJAX envoyée à foo.votredomaine.com est la même que search.google.com ou autre. Google doit reconnaître les demandes de votre nom d'hôte dans l'enregistrement A et dire "Oh oui, c'est moi, au nom de mon client" –

+0

Je pourrais aboyer le mauvais arbre ici cependant. –

Questions connexes