문제

기존의 jQuery 플러그인이있어 많은 ajax 호출 (주로 JSON)이 있습니다. 나는 그것이 $ .get와 $ .post url이 동일한 도메인에서 나오지 않는다.

나는 JSONP에 대해 들었지만 누군가가 나에게 전체 과정에 대해 구체적인 모범을 줄 수 있는지 궁금했다. 가능한 경우 내 스크립트를 최소한으로 변경하고 싶습니다. proxy.php의 종류를 사용해야합니까?

시간 내 주셔서 감사합니다.

도움이 되었습니까?

해결책

JSONP를 사용하면 크로스 사이트 호출을 수행 할 수 있습니다. 그 문제에 대해 jQuery 문서를 참조하십시오.

개념은 간단합니다 : 정상적인 ajax 호출 대신 jQuery는 <script> 당신의 태그 <head>. 이 작업을 수행하려면 JSON 데이터를 함수 호출로 래핑해야합니다.

서버는 그러한 방식으로 정보를 보내야합니다 (PHP 예).

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';

그런 다음 jQuery를 사용하여 해당 정보를 가져올 수 있습니다.

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

자세한 내용은 다음을 참조하십시오. JSONP는 무엇입니까?

다른 팁

원격 도메인을 제어 할 수 있거나 원격 도메인에 허용되는 경우 CrossDomain.xml 당신은와 같은 라이브러리에 떨어질 수 있습니다 flxhr 그것과 함께 jQuery 플러그인.

JSONP 대신 CORS를 사용하여 FF, Chrome, Safari와 함께 작동 할 수도 있습니다. CORS는 설정이 덜 번거 롭고 서버 측에서 필터 만 필요합니다.

이 기사를 살펴보십시오. Well은 설명하고 비슷합니다. 제약 조건 만 IE 가이 버전의 FF를 지원하지 않는다는 것입니다. Chrome에는 몇 가지 문제가 있습니다.

http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top