2010-07-27 2 views
4

일부 웹 사이트 (예 : apple.com 또는 disqus.com)에서 AJAX로드 요청 (예 : 실시간 검색 결과)을 보내지 않는 것으로 나타났습니다. 대신 모든 결과를 변수에 담는 새로운 JS 스크립트를 첨부합니다.AJAX 요청 대신 인라인 JS 스크립트 포함. 왜?

자세한 내용은 다음과 같습니다. apple.com으로 이동하여 검색 자에 "test"를 입력하십시오. 결과를 얻기 위해 AJAX 요청을 보내지 않고 대신 < 스크립트 src = "some.addres.apple.com/result.js?q=test">를 HTML에 추가하고 JS 스크립트의 새 부분을 실행합니다. 검색 결과를 가져 오십시오. 개선 AJAX 요청을 다른 도메인으로 보낼 수 없기 때문에이 작업을 수행하고 있습니까? 아니면 속도 향상이 있습니까?

답변

1

많은 논의가 JSONP의 "hackishness"의 온라인있다 : 나는 그것이 매우 유용하다는 것을 발견했다

도메인 간 보안 제한을 해결하기는했지만 속도 향상에 대해 전혀 듣지도 못했습니다.

JSONP에 대한 자세한 내용 (특히 유용하거나 필요한 경우)을 적극 권장합니다.

+0

Thx는 (귀하와 모든 사람들의 도움을) 매우 중요하게 생각합니다. 몇 시간 동안 그것에 대해 궁금해했다 :) – TheDude01

0

브라우저가 부과 한 제한 사항을 해결하기위한 방법은 페이지가로드 된 서버와 동일한 서버로 요청되어야한다고 생각합니다.

1

이 접근 방식은 jsonp라고합니다. ajax 요청 스크립트를 호출하는 대신 Ajax 호출에 대한 onComplete 콜백과 같은 콜백 함수로 래핑 된 데이터가 포함 된 새 script 태그를 추가합니다. 다른 도메인에 대한 요청이 필요할 때 유용합니다. 그렇지 않으면 (내 의견으로는) Ajax가 바람직하다. 적절한 error, success 및 제한 시간 콜백이 있습니다.

more about Jsonp

1

JSONP 기술의 주요 장점 중 하나는 검색 기능이 다른 서버에서 제공되고 JSONP 응답 메커니즘을 개발하는 데 어려움을 겪었 기 때문입니다. 어디서든 검색하십시오.

예를 들어, Apple은 다른 자매 웹 사이트에서 결과를 제공하기 위해 동일한 검색을 사용할 수 있습니다 (다른 생태계도 캡슐화 한 경우).

@fantactuka가 지적한대로 AJAX 호출은 스크립트 주입이 비용이 많이 들고 물건이 잘못되었을 때 처리 할 방법이 적기 때문에 나도 선호합니다.