web-dev-qa-db-fra.com

jQuery charge la page du site externe

Est-il possible de charger une seule page à partir d'un site Web externe?

J'essaie de montrer une seule page mais n'arrive pas à la faire fonctionner

$("#response").load("http://domain.com", function(response, status, xhr) {
   if (status == "error") {
      var msg = "Sorry but there was an error: ";
      alert(msg + xhr.status + " " + xhr.statusText);
   }
 });

De l'aide serait grandement appréciée

11
ngplayground

Vous rencontrez une stratégie de domaine croisé issue parce que AJAX (pour des raisons de sécurité) ne vous laissera pas récupérer le contenu d'une page ne se trouvant pas sur le même domaine.

Pour s'en débarrasser et accomplir votre tâche:
vous avez besoin d'un fichier PHP que vous pouvez appeler grabber.php avec juste cette ligne de PHP:

<?php echo file_get_contents($_GET['url']); ?>

Que dans votre html (ou n'importe quel fichier, faites comme :)

<!DOCTYPE html>
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <meta charset=utf-8 />
    <title>test</title>
</head>
<body>

    <div id="response"></div>

</body>

<script>
$(function(){
    var contentURI= 'http://domain.com #element';    // URL TO GRAB + # of any desired element // if needed :)
    $('#response').load('grabber.php?url='+ contentURI);
});
</script>

</html>

Pourquoi ça marche?

  • maintenant, AJAX envoie une simple requête GET à la page grabber.php,
  • grabber.php renvoie le contenu souhaité
  • maintenant le contenu est sur votre domaine (serveur)!
  • et AJAX est heureux de vous servir :)
21
Roko C. Buljan

Essayez-vous de charger une page sur un domaine différent?

Si oui, alors il semble que vous ayez une politique interdomaine sur votre chemin ...

0
andri