ホームページ  >  記事  >  CMS チュートリアル  >  DedeCMS digg Ajax クロスドメインの実装方法

DedeCMS digg Ajax クロスドメインの実装方法

藏色散人
藏色散人オリジナル
2019-12-18 10:11:082471ブラウズ

DedeCMS digg Ajax クロスドメインの実装方法

DedeCMS digg クロスドメイン Ajax を実装するにはどうすればよいですか?

Web プロジェクトは第 2 レベル ドメイン名を使用しているため、元の digg は通常は使用できません。慎重に分析した結果、Ajax JS の送信はドメインを越えて送信できないことが判明しました。

推奨調査: 梦Weavercms

は次の解決策を提供します:

@etongchina 作成 2009-02-06 19:00

実装計画: json 実装と同様

実装原則: js でインポートされたリモート ファイル (js) でローカル データを操作できるようにします

具体的な方法: (http://news.xxx.com を使用) /200812/25-4653.html を例として)

1. http://news.xxx.com/200812/25-4653.html の js 呼び出し部分を変更します;

ローカル HTML または JS ファイルに書き込みます:

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

次のコードを変更します: 3480a33610d32e976ec8d549dc8746f7Like5db79b134e9f6b82c0b36e0489ee08ed

は: cfab4601ec966302d2ce5eae5eccc014いいね5db79b134e9f6b82c0b36e0489ee08ed

2. リモート ファイルへのアクセス:

リモート ファイル ( http://www.xxx.com/../dig.php?type=digg&tid=456) は同様のコードを返します:

visitCountCallBack({ 
"visitcount":135 
});

上記のコードは、ローカル関数を呼び出すリモート ファイルと同等です: visitCountCallBack

このようにして、リモートの戻りデータを使用してローカル ファイルを動的に変更できます。

3. 概要:

このソリューションに関しては、現時点では実現可能ですが、時代遅れになると考える人もいます。 JS がその権限を踏み越えるという問題は起こらないと思います。

ここでは AJAX 風のアプリケーションを使用しています。主要なテクノロジは、3f1c4e4b6b16bbbd69b2ee476dc4f83a タグの src 属性のアプリケーションです。

次の HTML コードをご覧ください

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

上記のコードをローカル コンピューターにコピーし、IE または FIREFOX で開き、ボタンをクリックします。ページを更新せずに動的な効果が得られ、返されたデータがドメインを越えて取得されることがわかりました。JAVASCRIPT がドメインを越えてアクセスできないことは誰もが知っていますが、これは驚くべきことです。 。 。 。コードを注意深く研究すると、驚くべきことが明らかになりました。

このコード:

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

ブラウザは DOM 解析を通じて SCRIPT 要素を取得し、ID 属性と SRC 属性を追加しました。 W3C 仕様の SCRIPT 要素の SRC 属性の公式説明は次のとおりです: script 要素を使用すると、作成者はドキュメントに動的スクリプトを含めることができます。src 属性が設定されている場合、script 要素は外部ファイルを参照します。の値属性は URI (または IRI) である必要があります。src 属性が設定されていない場合、スクリプトは要素の内容によって指定されます。次のように解釈されます: SCRIPT タグの SRC 属性が定義されている場合、SCRIPT タグは以下を参照します外部ファイル、および属性値は URL である必要があります。これは、SCRIPT がこの URL からファイルの内容を参照することを意味します。全員がブラウザでこのリンクにアクセスします: http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 JAVA の SERVLET に似たこの URL は、次のデータを返します: visitCountCallBack({"visitcount": 65188579 、 "デイビジット":8658、 "スペースマーク":0、 "マークチェンジ":0、 "太陽":1680、 "愛":478、 "雨":1680、 "ニュートリ":1450、 "レベル":5、 " gardener":1});この文字列は JAVASCRIPT 関数であり、入力は JSON 文字列です。このデータが返されると、上記の別の JAVASCRIPT 関数が呼び出されます。 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]; 
} 
}

この関数では、innerHTML バーから返された JSON データを使用して BODY を埋め、ページを更新せずにデータを削除します。もう 1 つの重要な質問があります。 http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456 は QQ スペースの URL です (uin は QQ 番号です。独自の QQ 番号を入力して試すことができます) (テスト)、JAVASCRIPT は他のドメインからデータを呼び出します。この方法はデータを取得するのが比較的簡単で、ドメインを越えてデータにアクセスすることもできるため、単純で小規模な非リフレッシュ効果に適しています。いつかブラウザが更新され、このアクセス方法が拒否された場合、この方法で取得したデータが使用できなくなる可能性があることが少し心配です。皆さんもこの方法は注意して使用することをお勧めします。 ! !

以上がDedeCMS digg Ajax クロスドメインの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。