2011-08-24 3 views
1

그래서 this question은 jQuery ajax 요청이 DOM에 스크립트 태그를 삽입하지 않지만 jQuery가 대신에이를 평가한다고 알려줍니다. div에 일부 내용을로드하는 중입니다. 해당 div에는 AddThis의 몇 가지 단추가 있습니다. 이 버튼의 코드에는 http://s7.addthis.com의 스크립트가 포함되어 있습니다. jQuery는이 스크립트를 평가하는 것으로 보이지 않지만 단추가 표시되지 않습니다. 그것은 행복하게 같은 요청에로드 된 내 자신의 도메인에서 다른 스크립트를 평가합니다.jQuery AJAX 요청이 다른 도메인의 스크립트를 평가하지 않습니까?

다른 도메인의 스크립트를 평가하도록 jQuery에 지시 할 수있는 방법이 있습니까? 아니면이 동작을 다르게해야하는 이유가 있습니까?

읽어 주셔서 감사합니다.

답변

2

jQuery's ajax 메서드는 비동기 웹 요청의 모든 유형을 만들기위한 플랫폼 및 사용 사례 세부 사항을 추상화합니다.

당신은 (동의어가있는 jQuery.get(), jQuery.post(), jQuery.getJSON(), jQuery.getScript() 포함) 완전히 다른 워크 플로는 장면 뒤에 실행됩니다, 매개 변수의 다양한 조합과 ajax 방법, 각 시간을 호출 할 수 있습니다. 그것이 구체적으로 (truecrossDomain 설정을 통해)에 말했다 경우를 제외하고는 현재 페이지와 동일한 도메인에서 웹 페이지에 요청을하는 상황에서

후 jQuery를이 <script> 태그를 사용하지 않습니다. 대신 AJAX의 전통적인 방법을 사용합니다. XMLHttpRequest Object (다양한 Microsoft 구현 ActiveX으로 대체)

는 그러나 다른 도메인에 요청을하는 상황에서, 모든 최신 브라우저에 있기 때문에 same origin policy 이러한 방법을 사용 불가능입니다. 이러한 경우 jQuery.ajax은 태그를 사용하는입니다 (기술 이름은 JSONP 임).

JSONP는 서버의 응답을 특별한 방식으로 공식화해야합니다. 귀하의 응답이 아닌 유효한 JavaScript입니다. JSONP 이 필요하다는 것을 알아 두어야합니다. 자세한 내용은 question/answer 또는 Wikipedia에서 자세히 읽어보십시오.

서버의 응답이 유효한 JavaScript 일 필요는 없으므로 코드가 도메인에서 작동하고 있습니다. 그러나 ajax()가 JSONP를 사용하여 자동으로 시작될 때 유효한 JavaScript 요구 사항을 충족하지 못합니다.

관련 문제