2012-06-01 4 views
15

원격 jsonp.html을보고 Jquery UI 자동로드를 다운로드합니다. ... 내 콘솔에서 모든 요청을 볼 수 있습니다 ...이 아약스 기능입니다하지만 난 콘솔을 열데이터 유형 jsonp와 JSON의 차이

dataType와의 차이점은 무엇이며, "JSONP"및 데이터 유형; "JSON"

$("#city").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "http://ws.geonames.org/searchJSON", 
       dataType: "jsonp", 
       data: { 
        featureClass: "P", 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 
       success: function(data) { 
        response($.map(data.geonames, function(item) { 
         return { 
          label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
          value: item.name 
         } 
        })); 
       } 
      }); 
     }, 

동일한 도메인 동일한 기원 요청과 다른 도메인에 dataType: json 요청 수단 크로스 도메인 요청에 대한http://jqueryui.com/demos/autocomplete/remote-jsonp.html

답변

26

dataType: jsonp 참조.

JSONP를 사용하여 JSON 블록에로드됩니다. 추가 "? callback =?" URL의 끝에 추가하여 콜백을 지정하십시오. 옵션이 true로 설정되어 있지 않으면 쿼리 문자열 매개 변수 "_ = [TIMESTAMP]"를 URL에 추가하여 캐싱을 비활성화합니다.

same origin policy

보다 약 jQuery AJAX

+0

'cross-browser' 또는'cross-domain'입니까? : s –

+1

@ 죠이 확실히 크로스 도메인. –

+0

@Joy 덕분에 – thecodeparadox

7

즉 당신이 찾고있는 거라면 당신은 아약스 요청을 참조하지 않아야 JSONP로 읽기 읽기. 그러나 JSONP는 서로 다른 도메인의 데이터를 가져 오는 상호 도메인 호출에 사용되기 때문에 리소스 요청을보아야합니다.

JSON 데이터를 함수 이름으로 묶어서 반환합니다. jQuery는 배후에서 함수 이름을 처리하고 데이터를 성공 처리기로 전달합니다. 호출되는 서비스를 가리키는 src 속성과 브라우저의 DOM에 연결되는 스크립트 요소를 동적으로 생성하여 데이터를로드합니다. 그런 다음 브라우저가 리소스에 요청을하고 웹 서비스가 콜백 함수 및 데이터로 응답합니다.