jQuery로 JSONP를 요청할 때 정적 (즉, 사전 결정된) 콜백 함수 이름을 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1608302

문제

그만큼 jQuery 문서 $ .getJson을 사용하여 JSONP를 요청하는 다음 예제를 나열합니다.

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
  function(data) {
    $.each(data.items, function(i,item) {
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if (i == 3) return false;
    });
  });

이 매개 변수로 인해 동적 콜백 함수 이름을 생성하는이 메소드를 사용하는 대신 :

jsoncallback=?

다음과 같이 하드 코드 기능 이름으로 미리 설정할 수 있기를 원합니다.

jsoncallback=test

이것은 스크립트를 실행한다는 의미에서 내가 다시 얻는 JSONP에 JSON 객체를 test () 호출로 포장했습니다.

그러나 콜백 함수를 설정하는 방법을 알 수 없습니다. 이것만큼 단순하지 않아야합니까?

function test(data) {
  console.log(data);
}

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=test");

그것을 시도 할 때, 나는 test ()에 싸인 JSONP를 되 찾지만, 내가 정의한 함수 test ()는 호출되지 않습니다. 내가 뭔가를 놓치고 있습니까?

도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

처럼 문서에 정의되었습니다 다음 방법을 사용합니다

jQuery.getJSON(...)

지정해야합니다 callback=? JSONP 호출을 할 때. 나는 보통 "JSON"의 응답 유형에만 이것을 사용합니다. "JSONP"의 응답 유형의 경우 다음을 사용하려고합니다.

jQuery.get(...)

그리고 type "JSONP"로서. 이것 좀 봐 주제에 대한 문서. 그러나 그것은 또한 callback=?.

내가 당신이 생각하는 것 찾는 것은 이것입니다:

jQuery.getScript(...)

귀하가 정의한 방법을 실행해야합니다. callback.

다른 팁

아, "관련된"사이드 바 섹션이 나를 여기로 구했습니다. 이 질문을 제출 한 후에는 이미 비슷한 질문을 발견했습니다.

Facebook 요청 서명 요구를 충족시키기 위해 jQuery에서 $ .getJson의 콜백으로 명명 된 기능을 사용합니다.

10 월 15 일의 Duncan의 답변은 이것을 해결했습니다.

window.fixed_callback = function(data){
  alert(data.title);
};

$(function() {
  $.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
  alert('done'); } );
});

키가 $ .getJson 대신 $ .getScript를 사용하는 것 같습니다. 하나는 여전히 $ .getScript 메소드의 매개 변수에 익명 콜백 함수를 지정할 수 있으며,이 경우 요청 URL 매개 변수 (이 경우 "고정 _callback")에서 이름이 지정된 콜백 함수 다음에 실행됩니다. 이것이 누군가가 길을 따라가는 데 도움이되기를 바랍니다.

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