문제

어떻게 사용합니까? beforeSend 콜백 $.getJSON(크로스 도메인).

더 구체적으로 $.getJSON IS Call은 YQL 서비스와 같은 IS입니다

html에서 *를 선택하여 url =”http://www.yahoo.com

도움이 되었습니까?

해결책

유일한 목적 BeforeSend RAW XHR 객체에 도달하는 것입니다 (일반적으로 HTTP 헤더를 설정하기 위해). 당신은 스피너 등을 쫓아 내기 위해 그것을 필요로하지 않습니다. 이 코드는 여기 (@petersendidit에서) :

jQuery.ajax({
    url: url,
    dataType: "json",
    beforeSend: function(){
        $('.loading').show();
    }
});

다음과 같이 더 잘 작성됩니다.

$('.loading').show();
jQuery.ajax({
    url: url,
    dataType: "json"
});

즉, jQuery.ajax에 고급 옵션이 필요하지 않으면 jQuery.getJson을 사용하려는 원래 계획은 괜찮습니다. 그래서 당신은 당신이 로딩 gif를 보여주고 싶다고 말하고, 그냥 이것을하고 잊어 버립니다. beforeSend.

jQuery(".someSpinnerImage").show();
jQuery.getJSON("http://www.somedomain.com/someurl", function(data) {
    jQuery(".someSpinnerImage").hide();
    // Do something with data
}

다른 팁

$ .getJson은 $ .ajax 함수의 단지 기능입니다

get: function( url, data, callback, type ) {
   // shift arguments if data argument was ommited
   if ( jQuery.isFunction( data ) ) {
      callback = data;
      data = null;
   }
   return jQuery.ajax({
       type: "GET",
       url: url,
       data: data,
       success: callback,
       dataType: type
   });
}, 
getJSON: function( url, data, callback ) {
    return jQuery.get(url, data, callback, "json");
},

따라서 더 이상 무엇이든해야한다면 기본 Getjson 호출은 $ .ajax를 사용하여 다음과 같습니다.

jQuery.ajax({
    url: url,
    dataType: "json",
    beforeSend: function(){
        $('.loading').show();
    }
});

다른 옵션은 사용하는 것입니다 $ .ajaxsend 그리고 $ .AjaxComplete 함수이지만이 기능은 모든 Ajax 호출 전후에 해당 기능을 호출하게됩니다.

나는 당신이 사용하고 싶다고 생각합니다 $ .ajaxstart () 그리고 $ .ajaxstop (). 이를 통해 AJAX/JSON 요청에로드 GIF를 보여주고 숨길 수 있습니다. AJAX 요청이 여러 개있는 경우에도 옳은 일을합니다.

다른 서버에서 스크립트를 호출하기 위해 JSONP를 사용하고 있다고 생각합니다. 나는 숙제를했는데 JSONP Call에서 Beforesend 이벤트가 없습니다.

올바른 방법은 캐시 된 쿼리에서 완전한 콜백이 호출되지 않기 때문에 BeforeSend 콜백을 사용하는 것입니다.이 인스턴스에서 요청이 전송되지 않으므로 BeforeSend도 호출되지 않기 때문입니다.

또 다른 단어, $ .ajax 요청을 작성하기 전에로드 이미지를 표시하고 해당 요청이 완료된 내에 숨어있는 데 의존하면 쿼리가 캐시되면로드 이미지가 "표시"에 갇히게됩니다.

이것이 올바른 방법입니다.

$.ajax({
url: url,
dataType: "json",
beforeSend: function() {
    $('.loading').show();
},
success: function(data) {
    // Do stuff...
},
complete: function() {
    $('.loading').hide();
}});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top