Maison > Article > Tutoriel CMS > Comment implémenter DedeCMS digg Ajax cross-domain
Comment implémenter DedeCMS digg Ajax sur tous les domaines ?
Étant donné que le projet Web utilise un nom de domaine de deuxième niveau, le digg original ne peut pas être utilisé normalement. Après une analyse minutieuse, il a été constaté que le problème était que la soumission Ajax JS ne pouvait pas être multi-domaine.
Étude recommandée : Dreamweaver cms
fournit les solutions suivantes :
@écrit par etongchina 2009-02-06 19:00
Plan d'implémentation : similaire à l'implémentation json
Principe d'implémentation : js permet aux fichiers distants importés (js) d'exploiter les données locales
Méthode spécifique : (prendre http://news.xxx.com /200812/25-4653.html à titre d'exemple)
1. Modifier la partie d'appel js de http://news.xxx.com/200812/25-4653.html
Écrivez dans le fichier html ou js local :
<SCRIPT LANGUAGE="JavaScript"> function _Digg(type,tid){ var s = document.createElement("SCRIPT"); s.id="cgi_emotion_list"; document.getElementsByTagName("HEAD")[0].appendChild(s); s.src="http://www.xxx.com/../dig.php?type="+type+"&tid="+tid ; //需要统计的php页面的 src } function visitCountCallBack(data){ document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list")); for(var i in data){ var e =document.getElementById(i); if(e) e.innerHTML=data[i]; //一些代码去修改本地html } } </script>
Modifiez le code suivant : 3480a33610d32e976ec8d549dc8746f7Like5db79b134e9f6b82c0b36e0489ee08ed 🎜> est : cfab4601ec966302d2ce5eae5eccc014Like5db79b134e9f6b82c0b36e0489ee08ed
2. Accéder aux fichiers distants :
Le fichier distant (http://www.xxx.com/../dig.php?type=digg&tid=456) renvoie un code similaire :
visitCountCallBack({ "visitcount":135 });
Le code ci-dessus est équivalent au fichier distant appelant la fonction locale : visitCountCallBack
De cette façon, vous pouvez utiliser les données de retour à distance pour modifier dynamiquement les fichiers locaux.
3. Résumé :
Concernant cette solution, elle est actuellement réalisable, mais certains pensent qu'elle sera dépassée. Je ne pense pas qu'il y aura de problème si JS outrepasse son autorité.
J'ai ici une application de type AJAX. La technologie clé est l'application de l'attribut src de la balise 3f1c4e4b6b16bbbd69b2ee476dc4f83a
Veuillez jeter un œil au code HTML suivant
<HTML> <HEAD> <title>异步json例子</title> <SCRIPT LANGUAGE="JavaScript"> function test(){ var s = document.createElement("SCRIPT"); s.id="cgi_emotion_list"; document.getElementsByTagName("HEAD")[0].appendChild(s); s.src="http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456"; // test=function(){}; } function visitCountCallBack(data){ document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list")); for(var i in data){ var e =document.getElementById(i); if(e) e.innerHTML=data[i]; } } </SCRIPT> </HEAD> <BODY> <button onclick="test()">test</button><BR> 历史访问人数:<span id="visitcount" style="color:#6600CC">点击test按钮获取数据</span><BR> 今天访问人数:<span id="dayvisit" style="color:#CC6633">点击test按钮获取数据</span><BR> 阳光指数:<span id="sun" style="color:red">点击test按钮获取数据</span><BR> 爱心指数:<span id="love" style="color:violet">点击test按钮获取数据</span><BR> 雨露指数:<span id="rain" style="color:blue">点击test按钮获取数据</span><BR> 营养指数:<span id="nutri" style="color:green">点击test按钮获取数据</span><BR> 花匠级别:<span id="gardener" style="color:#996633">点击test按钮获取数据</span> </BODY> </HTML>
Vous pouvez copier le code ci-dessus sur votre ordinateur local et l'ouvrir avec IE ou FIREFOX Cliquez sur le bouton. J'ai constaté que l'effet dynamique était obtenu sans actualiser la page et que les données renvoyées étaient obtenues sur plusieurs domaines. Tout le monde sait que JAVASCRIPT n'est pas accessible sur tous les domaines, ce qui est étonnant. . . . Après avoir soigneusement étudié le code, j'ai découvert les merveilles
Ce code :
var s = document.createElement("SCRIPT"); s.id="cgi_emotion_list"; document.getElementsByTagName("HEAD")[0].appendChild(s); s.src="http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456";
Le navigateur a obtenu l'élément SCRIPT via l'analyse DOM, puis a ajouté les attributs ID et SRC. Voici l'explication officielle de l'attribut SRC des éléments SCRIPT de la spécification W3C : L'élément script permet aux auteurs d'inclure un script dynamique dans leurs documents. Lorsque l'attribut src est défini, l'élément script fait référence à un fichier externe. l'attribut doit être un URI (ou IRI). Si l'attribut src n'est pas défini, alors le script est donné par le contenu de l'élément. Interprété comme : Si l'attribut SRC de la balise SCRIPT est défini, la balise SCRIPT fait référence à un. fichier externe et la valeur de l'attribut doit être une URL. Cela signifie que SCRIPT référencera le contenu du fichier à partir de cette URL. Tout le monde accède à ce lien dans le navigateur : http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 Cette URL similaire au SERVLET de JAVA renvoie les données suivantes : visitCountCallBack({"visitcount": 65188579 , "dayvisit":8658, "spacemark":0, "markchange":0, "sun":1680, "love":478, "rain":1680, "nutri":1450, "level":5, " gardener":1});Cette chaîne est une fonction JAVASCRIPT et l'entrée est une chaîne JSON. Lorsque ces données sont renvoyées, une autre fonction JAVASCRIPT ci-dessus est appelée : function visitCountCallBack(data){
document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list")); for(var i in data){ var e =document.getElementById(i); if(e) e.innerHTML=data[i]; } }
Dans la fonction, les données JSON renvoyées par la barre innerHTML sont utilisées pour remplir le BODY, obtenant ainsi un accès asynchrone au données sans actualiser l’effet de la page. Il y a une autre question clé : http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 est une URL de l'espace QQ (uin est le numéro QQ, vous pouvez entrer votre propre numéro QQ pour essayer (Test), JAVASCRIPT appelle des données provenant d'autres domaines. Cette méthode est relativement simple pour obtenir des données et peut également accéder aux données dans tous les domaines. Elle est plus adaptée à certains petits effets simples sans actualisation. Je crains un peu que si le navigateur est mis à jour un jour et refuse cette méthode d'accès, les données obtenues de cette manière risquent de devenir indisponibles. Je suggère à tout le monde d'utiliser cette méthode avec prudence ! ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!