$ .getJson에서 BeforeSend
-
06-07-2019 - |
문제
어떻게 사용합니까? 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();
}});