Dans le processus d'apprentissage des demandes Ajax à l'aide de JQuery, j'ai essayé de charger la page d'accueil de Google en cliquant sur un lien. Donc j'ai écrit quelque chose comme: et quelque part dans le corps: p> qui n'a pas fonctionné et je pensais que la syntaxe erreur ou quelque chose. Mais plus tard, lorsque j'ai remplacé l'URL Google avec un fichier HTML statique sur le serveur, il fonctionnait correctement. P> $("#g").load("Temp.htm");
6 Réponses :
Vous n'êtes pas autorisé à faire des appels Ajax cross-domain pour des raisons de sécurité - voir Même stratégie d'origine < / a>. p>
Ceci est dû à la sécurité. Vous pouvez tout lire à ce sujet avec une solution sur Yahoo . p>
Tout d'abord, je dois supposer que vous avez une très bonne raison de faire quelque chose qu'un lien effectue par défaut avec JavaScript ... P>
La principale raison est probablement la sécurité: vous ne pouvez accéder à aucune donnée en dehors du domaine actuel de JavaScript. P>
Je n'ai aucune raison de faire cela. Je faisais cela pour apprendre les appels JQuery et Ajax (et je t'ai essayé naïf d'utiliser Google). Donc, probablement, je n'ai peut-être jamais besoin d'appeler d'autres serveurs, mais il est toujours bon de connaître les solutions si cela est nécessaire (suggéré par Andy).
jQuery utilise une requête AJAX (XMLHTTPRequest) pour charger les données, mais le navigateur permet à cela des ressources sur le même domaine. (Les réponses ci-dessus mentionnent le Même stratégie d'origine ). C'est pourquoi cela fonctionne avec TEMP.HTM, mais pas www.google.com.
Un moyen de contourner ce problème est de créer un script de serveur qui chargera la page pour vous - essentiellement un proxy. Ensuite, vous appelez p>
$('#g').load("load.php?url=google.com")
L'autre solution consiste à utiliser des iframes pour la communication - j'ai trouvé cette bibliothèque, ce qui semble être ce dont vous avez besoin: jQuery-crossframe p> li>
Réponse très complète et complète
alors load.php lit simplement le domaine interrogé et stocke le contenu?
Il convient de noter que vous n'êtes pas complètement exclu des demandes de domaine croisées dans JavaScript.
AS de JQuery 1.2, vous pouvez charger des données JSON situées sur un autre domaine si vous spécifiez un rappel JSON-P et l'URL que vous avez L'appel prend en charge la sortie JSON-P. P>
L'exemple suivant est directement des documents JQuery. Il attrape les quatre dernières photos Flickr marquées avec "CAT". P>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); });
Essayez d'ajouter
$("#g").load("http://www.google.com",{nomeaning:'nomeaning'});