Puis-je charger des données à partir d’une page externe via AJAX?

Je viens juste de commencer à apprendre jQuery et AJAX. Je suis en mesure de charger une page locale (sur mon disque) dans un div via jQuery.load() , mais les sites externes ne semblent pas fonctionner. J’ai même utilisé Wirehark pour vérifier si les données sont envoyées par le serveur (c’est le cas). Exemple de code est ci-dessous:

     $(document).ready(function() { // $('#test').load('localpage.htm'); works! $('#test').load('http://www.google.com/'); // does not work! });    

Est-il possible de faire cela en premier lieu? Si c’est le cas, comment?

Hors de la boîte: non. C’est un problème de sécurité. Il existe cependant quelques solutions de contournement différentes .

Vous ne pouvez pas effectuer d’appels ajax vers un domaine différent de celui d’origine du script.

Pour faire une telle chose, vous devez utiliser une page proxy sur votre propre page, par exemple:

  

getgoogle.php:

  

Vous rencontrez la politique de même origine . Vous ne pouvez pas accéder aux données d’un domaine externe en utilisant AJAX, c’est considéré comme un risque de sécurité. La raison derrière cela est que les requêtes AJAX fonctionnent avec les cookies stockés par le navigateur – si j’essayais d’accéder à facebook.com et que vous y étiez connecté, le cookie serait envoyé et j’aurais access à vos données personnelles.

Pour des raisons de sécurité, vous ne pouvez pas utiliser AJAX pour demander une page à partir d’un autre domaine (ou protocole ou port).

Au lieu de cela, vous pouvez écrire un script côté serveur sur votre serveur pour transférer les demandes vers un autre domaine. (Ceci n’est pas possible si vous exécutez une page à partir d’un file:// url)

Ajax? Oui. XHR? Non (sauf si le navigateur implémente XHR Cross-site qui n’est pas encore répandu).

Pour obtenir les données avec Ajax sans utiliser XHR, le site externe doit fournir les données au format JSONP .

Vous pouvez également utiliser un script côté serveur sur votre serveur pour créer un proxy sur les données, le faisant ainsi provenir du même hôte (en ce qui concerne JavaScript).

Non ce n’est pas. Jetez un coup d’oeil à la politique de la même origine . JSONP doit être activé sur le site que vous essayez de demander pour que cela fonctionne, et vous utiliseriez un rappel interdomaine . Vous pouvez également créer un proxy sur votre propre domaine, qui saisit la page pour le compte de votre demande ajax.

Chargez ce script PHP au lieu d’essayer de charger le site directement

 $filename = "http://www.sitename.com"; $handle = fopen($filename, "r"); if ($handle) { while (!feof($handle)) { $text .= fread($handle, 128); } fclose($handle); } print $text; 

Edit: Ou simplement comme la solution de Henchman avec file_get_contents

Vous ne pouvez pas appeler Ajax depuis un autre domaine. Vérifiez la technique JSON pour cette