>  기사  >  CMS 튜토리얼  >  DedeCMS digg Ajax 크로스 도메인 구현 방법

DedeCMS digg Ajax 크로스 도메인 구현 방법

藏色散人
藏色散人원래의
2019-12-18 10:11:082534검색

DedeCMS digg Ajax 크로스 도메인 구현 방법

DedeCMS digg 도메인 간 Ajax를 구현하는 방법은 무엇입니까?

웹 프로젝트는 2차 도메인 이름을 사용하기 때문에 원본 디그를 정상적으로 사용할 수 없습니다. 주의 깊게 분석한 결과, Ajax JS 제출은 여러 도메인에 걸쳐 제출할 수 없는 것으로 나타났습니다.

권장 연구: 梦Weavercms

은 다음 솔루션을 제공합니다.

@writer by 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>

다음 코드 수정: d499d079c3b546e300724476b26a400c좋아요5db79b134e9f6b82c0b36e0489ee08ed

는 다음과 같습니다:cfab4601ec966302d2ce5eae5eccc014좋아요4a11e5928b3688cf38c9163b657eb5ac

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 속성이 설정되면 스크립트 요소의 값이 참조됩니다. 속성은 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 , "dayvisit":8658, "spacemark":0, "markchange":0, "sun":1680, "love":478, "rain":1680, "nutri":1450, "level":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를 채우는 데 사용되며, 페이지를 새로 고치는 중입니다. 또 다른 주요 질문이 있습니다: http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456은 QQ 공간의 URL입니다(uin은 QQ 번호입니다. 자신의 QQ 번호를 입력하여 시도해 볼 수 있습니다. (테스트) JAVASCRIPT는 다른 도메인의 데이터를 호출합니다. 이 방법은 비교적 간단하게 데이터를 얻을 수 있으며 도메인 전체에 걸쳐 데이터에 액세스할 수도 있습니다. 단순하고 작은 새로 고침이 아닌 효과에 더 적합합니다. 어느 날 브라우저가 업데이트되어 이 접근 방법을 거부하게 된다면 이렇게 얻은 데이터를 사용할 수 없게 될 수도 있다는 점은 조금 걱정됩니다. ! !

위 내용은 DedeCMS digg Ajax 크로스 도메인 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.