programing

JSON 시간 초과 처리 가져오기

yellowcard 2023. 8. 28. 20:56
반응형

JSON 시간 초과 처리 가져오기

jQuery를 사용하고 있습니다.getJSON()기능.이 기능은 문제 없이 데이터를 얻을 수 있습니다.하지만 가끔은 기다리고, 기다리고...그리고 페이지 중앙에 로드 로드 로드를 보여주는 로드 바가 있습니다.SojQueryajax()함수에 시간 초과 변수가 있습니다.하지만 나는 사용하고 싶습니다.getJSON기능.그리고 나는 내가 사용할 수 있다고 생각합니다.ajaxStart()그리고.ajaxStop()기능들.하지만 어떻게요?

$('.loadingDiv')
    .hide()
    .ajaxStart(function() {
        $(this).fadeIn();
        setTimeout("throw '';",15000) //i used this but didn't work
        setTimeout("return;",15000) //i used this but didn't work
        setTimeout("abort();",15000) //i used this but didn't work.(Abort all ajax events)
    })
    .ajaxStop(function() {
        $(this).fadeOut();
    });

getJSON()호출할 수 있는 약속을 반환합니다.abort함수:

var p = $.getJSON(..., function(){ alert('success');});
setTimeout(function(){ p.abort(); }, 2000);

편집: 하지만 만약 너무 많은 시간이 걸린다면 당신의 목표가 단지 중단하는 것이라면, 필살기 기타의 대답이 더 낫습니다.

getJSON()는 다음의 약어일 뿐입니다.

$.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: success
});

그래서 당신은 사용할 수 있습니다.$.ajax()다음을 지정합니다.timeout원하는 옵션을 선택합니다.참고 항목: http://api.jquery.com/jQuery.getJSON/

필살 기타가 언급했듯이getJSON()기능은 의 약어일 뿐입니다.$.ajax()실제 오류가 아닌 시간 초과가 발생했는지 탐지하려면 아래 코드를 사용하십시오.

var request = $.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: function( ) { },
    timeout: 2000
}).fail( function( xhr, status ) {
    if( status == "timeout" ) {
        // do stuff in case of timeout
    }
});

핵개발 경로도 항상 존재합니다.

//Set AJAX timeout to 10 seconds
$.ajaxSetup({
  timeout: 10*1000
});

이렇게 하면 프로그램에서 요청하는 모든 AJAX가 설정됩니다($.getJ를 통해서도).SON) 10초 안에 시간을 갖는 것 (혹은 당신은 무엇을 가지고 있습니까).

setTimeout 함수는 전역 범위에서 지정된 밀리초 수 이후에 코드 집합을 실행합니다.

겟제이SON 함수(여기에 있는 jQuery 설명서에 따르면 http://api.jquery.com/jQuery.getJSON/) 는 다음의 약자입니다.

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

따라서 다음과 같이 전화를 걸 수 있습니다.

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success,
  timeout: 15000
});

$('.loadingDiv')
    .hide()
    .ajaxStart(function() {
        $(this).fadeIn();
    })
    .ajaxStop(function() {
        $(this).fadeOut();
    });

저는 이 대답들 중 어떤 것도 이상적이지 않다고 생각합니다.이것이 몇 년이나 늦었다는 것을 알지만, 당신이 원하는 것은 성공/오류 콜백 옵션을 사용하는 것입니다..ajax();메서드는 JSONP 응답을 수신할 때 사용됩니다.

이를 구성하는 방법의 예:

    // Call
    $.ajax({

      // URL you want to get
      url: 'http://example.com/json?callback=?',

      // Set a realistic time in milliseconds
      timeout: 3000,

      // Put in success callback function here, this example
      // shows you the data you got back from the call
      success: function(data) {
        console.log(data);
      },

      // Put in an error handling function, just an alert in this case
      error: function(badData) {
        alert('The call was unsuccessful');
      },

      type: 'POST'
    });

언급URL : https://stackoverflow.com/questions/14238619/getjson-timeout-handling

반응형