Heim  >  Artikel  >  CMS-Tutorial  >  So implementieren Sie DedeCMS digg Ajax domänenübergreifend

So implementieren Sie DedeCMS digg Ajax domänenübergreifend

藏色散人
藏色散人Original
2019-12-18 10:11:082522Durchsuche

So implementieren Sie DedeCMS digg Ajax domänenübergreifend

Wie implementiert man DedeCMS digg Ajax domänenübergreifend?

Da das Webprojekt einen Domänennamen der zweiten Ebene verwendet, kann das ursprüngliche Digg nicht normal verwendet werden. Nach sorgfältiger Analyse wurde festgestellt, dass das Problem darin bestand, dass die Übermittlung von Ajax JS nicht domänenübergreifend erfolgen konnte.

Empfohlene Studie: Dreamweaver cms

bietet die folgenden Lösungen:

@writen by etongchina 2009-02-06 19:00

Implementierungsplan: ähnlich der JSON-Implementierung

Implementierungsprinzip: js ermöglicht importierten Remote-Dateien (js) den Betrieb lokaler Daten

Spezifische Methode: (nehmen Sie http://news.xxx. com /200812/25-4653.html als Beispiel)

1. Ändern Sie den js-Aufrufteil von http://news.xxx.com/200812/25-4653.html

Schreiben Sie in die lokale HTML- oder JS-Datei:

<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>

Ändern Sie den folgenden Code: 3480a33610d32e976ec8d549dc8746f7Like5db79b134e9f6b82c0b36e0489ee08ed 🎜> ist: cfab4601ec966302d2ce5eae5eccc014Like5db79b134e9f6b82c0b36e0489ee08ed

2. Auf Remote-Dateien zugreifen:

Die Remote-Datei (http://www.xxx.com/../dig.php?type=digg&tid=456) gibt einen ähnlichen Code zurück:

visitCountCallBack({ 
"visitcount":135 
});

Der obige Code entspricht der Remote-Datei, die die lokale Funktion aufruft: visitCountCallBack

Auf diese Weise können Sie Remote-Rückgabedaten verwenden, um lokale Dateien dynamisch zu ändern.

3. Zusammenfassung:

Diese Lösung ist derzeit machbar, aber einige Leute glauben, dass sie veraltet sein wird. Ich glaube nicht, dass es ein Problem geben wird, wenn JS seine Autorität überschreitet.

Ich habe hier eine AJAX-ähnliche Anwendung. Die Schlüsseltechnologie ist die Anwendung des src-Attributs des 3f1c4e4b6b16bbbd69b2ee476dc4f83a

Bitte schauen Sie sich den folgenden HTML-Code an

<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>

Sie können den obigen Code auf Ihren lokalen Computer kopieren und ihn mit IE oder FIREFOX öffnen. Klicken Sie auf die Schaltfläche. Ich habe festgestellt, dass der dynamische Effekt ohne Aktualisierung der Seite erzielt wurde und die zurückgegebenen Daten domänenübergreifend abgerufen wurden. Jeder weiß, dass auf JAVASCRIPT nicht domänenübergreifend zugegriffen werden kann, was erstaunlich ist. . . . Nachdem ich den Code sorgfältig studiert hatte, entdeckte ich die Wunder

Dieser 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";

Der Browser erhielt das SCRIPT-Element durch DOM-Analyse und fügte dann die ID- und SRC-Attribute hinzu. Hier ist die offizielle Erklärung des SRC-Attributs von SCRIPT-Elementen aus der W3C-Spezifikation: Das Skriptelement ermöglicht es Autoren, dynamische Skripte in ihre Dokumente aufzunehmen. Wenn das src-Attribut festgelegt ist, verweist das Skriptelement auf eine externe Datei Attribut muss ein URI (oder IRI) sein. Wenn das src-Attribut nicht festgelegt ist, wird das Skript durch den Inhalt des Elements angegeben. Interpretiert als: Wenn das SRC-Attribut des SCRIPT-Tags definiert ist, verweist das SCRIPT-Tag auf ein externe Datei und der Attributwert muss eine URL sein. Das bedeutet, dass SCRIPT von dieser URL aus auf den Inhalt der Datei verweist. Jeder greift im Browser auf diesen Link zu: http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 Diese URL ähnelt dem SERVLET von JAVA und gibt die folgenden Daten zurück: visitCountCallBack({"visitcount": 65188579 , „dayvisit“:8658, „spacemark“:0, „markchange“:0, „sun“:1680, „love“:478, „rain“:1680, „nutri“:1450, „level“:5, „ gardener":1});Dieser String ist eine JAVASCRIPT-Funktion und die Eingabe ist ein JSON-String. Wenn diese Daten zurückgegeben werden, wird eine weitere JAVASCRIPT-Funktion oben aufgerufen: 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]; 
} 
}

In der Funktion werden die von der innerHTML-Leiste zurückgegebenen JSON-Daten verwendet, um den BODY zu füllen und so einen asynchronen Zugriff auf den zu erreichen Daten, ohne den Seiteneffekt zu aktualisieren. Es gibt noch eine weitere Schlüsselfrage: http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 ist eine URL des QQ-Bereichs (uin ist eine QQ-Nummer, Sie können Ihre eigene QQ-Nummer eingeben, um es auszuprobieren (Test), JAVASCRIPT ruft Daten aus anderen Domänen auf. Diese Methode ist relativ einfach zum Abrufen von Daten und kann auch domänenübergreifend auf Daten zugreifen. Sie eignet sich besser für einige einfache, kleine Nicht-Aktualisierungseffekte. Ich mache mir ein wenig Sorgen, dass die auf diese Weise erhaltenen Daten möglicherweise unbrauchbar werden, wenn der Browser eines Tages aktualisiert wird und diese Zugriffsmethode verweigert. Ich empfehle jedem, diese Methode mit Vorsicht zu verwenden! ! !

Das obige ist der detaillierte Inhalt vonSo implementieren Sie DedeCMS digg Ajax domänenübergreifend. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn