2012-08-02 2 views
3

여기에서 REST API 데이터에서 데이터를 요청하고 JQuery를 사용하여 웹 페이지에 표시하려고합니다.JQuery 콜백 메소드의 불일치

응답에 대략 200ms, 300ms, 7000ms 시간이 걸리는 3 가지 요청을하고 있습니다. 여기에 두 개의 호출 메소드가 3 개에서 호출되고 있습니다. 왜 3 번째 호출이 호출되지 않는지 이해하지 못합니다. Firebug 도구를 사용하여 디버그 할 때 응답이 서버에서 발생합니다.

아래 기능 순서가 변경되면 동작이 변경됩니다. 하나 또는 두 개의 콜백 메소드가 호출되고 있습니다.

이 문제를 해결하는 데 도움을주십시오.

$.getJSON(
    "http://115.111.168.221:8080/AnalysisWebService/getDataFromSocialMedia?searchString=wellpoint&startDate=2012-08-01&endDate=2012-08-04&method=getAnalysisRange", 
    function(json) { 

     } 

$(function() { 
$.getJSON(
"http://115.111.168.221:8080/AnalysisWebService/getDataFromSocialMedia?searchString=wellpoint&source=facebook,twitter&searchFrom=socialmention&method=getTodayAnalysis",   

function(json) { 

} 
} 
); 
); 

$(function() { 
$.getJSON(
"http://115.111.168.221:8080/AnalysisWebService/getDataFromSocialMedia?searchString=wellpoint&source=facebook,twitter&searchFrom=socialmention&method=getCurrentAnalysis",  

function(json) { 

} 
} 
); 
); 

답변

1

이 시도 :

var url = 'http://115.111.168.221:8080/AnalysisWebService/getDataFromSocialMedia?searchString=wellpoint'; 

$.getJSON(url + '&startDate=2012-08-01&endDate=2012-08-04&method=getAnalysisRange', function (json) { 
    // do something 
}); 

$.getJSON(url + '&source=facebook,twitter&searchFrom=socialmention&method=getTodayAnalysis', function (json) { 
    // do something 
}); 

$.getJSON(url + '&source=facebook,twitter&searchFrom=socialmention&method=getCurrentAnalysis', function (json) { 
    // do something 
}); 

당신은 DOM은 당신이 어떤 요청을 해고하기 위해 준비 할 필요가 없기 때문에 다른 어떤에서 그들을 포장 할 필요가 없습니다.

더 좋은, 더 읽기 쉽 같은 것을 할 :

var url = 'http://115.111.168.221:8080/AnalysisWebService/getDataFromSocialMedia'; 

$.getJSON(url, { 
    searchString: 'wellpoint', 
    startDate: '2012-08-01', 
    endDate: '2012-08-04', 
    method: 'getAnalysisRange' 
}).success(function(json) { 
    console.log(json); 
}).error(function() { 
    console.log('error!'); 
}); 

$.getJSON(url, { 
    searchString: 'wellpoint', 
    source: 'facebook,twitter', 
    searchFrom: 'socialmention', 
    method: 'getTodayAnalysis' 
}).success(function(json) { 
    console.log(json); 
}).error(function() { 
    console.log('error!'); 
}); 

$.getJSON(url, { 
    searchString: 'wellpoint', 
    source: 'facebook,twitter', 
    searchFrom: 'socialmention', 
    method: 'getCurrentAnalysis' 

}).success(function(json) { 
    console.log(json); 
}).error(function() { 
    console.log('error!'); 
}); 

편집을 : 나뿐만 아니라 오류 처리기를 부착하고 제거했다? url에서.

+0

도움을 주셔서 감사합니다 !! 내 코드 형식을 향상시킬 수 있으며 필자가 제안한 내용과 비슷하게 작성했습니다. 그러나 내 문제가 계속됩니다. 위의 요청 중 하나 또는 둘 모두에 대해 내 콜백이 호출되지 않습니다. 왜 이렇게 행동하는지 전혀 모르겠습니다. 내가 여러 번 요청할 때 어떤 문제가 있겠습니까 ?? – Swamy

+0

내가 편집 한 것처럼 오류 처리기를 추가해보십시오. 그들은 발포하고 있습니까? 성공 사례 처리기가 작동하지 않는 이유는 서버 측 오류 일 수 있습니다. – Radu

+0

Firebug 플러그인을 사용하여 응답을 볼 수 있습니다. 서버 측 기능을 테스트했는데 정상적으로 작동합니다. 한 번 더 언급 할 점은 요청을 반복적으로 보낼 때 몇 번이나 콜백 메서드가 호출되는 것입니다. 나는 방향으로보고있다, 그것은 동기화 문제 일 수 있는가? – Swamy

1

괄호와 괄호가 올바르게 정렬되어 있지 않습니다. Firebug를 통해 확인하는 경우 페이지에 오류가 발생해야합니다.

업데이트 : 난 당신의 코드가 같은 포맷해야한다고 생각 :

$.getJSON(
    url, 
    function(json) { 

    } 
) 

$(function() { 
    $.getJSON(
    url,  

     function(json) { 

     } 
    ) 
} 
); 

$(function() { 
    $.getJSON(
     url,  

     function(json) { 

     } 
    ) 
} 
); 

또한, 당신은 함수로 중복 코드를 이동 고려해야하고, 단지 document.ready 통화 중 하나를 사용하여. 이렇게하면 코드가 더 강력하고 읽기 쉬워집니다.

+2

AFAIK를 원하는만큼 많은 document.ready를 가질 수 있습니다. – Radu

+0

@GrailsGuy 사실이 아니라면 원하는만큼 $ (function() {}) 선언을 할 수 있습니다. http://jsfiddle.net/5pVLG/ 이 모든 메소드는 document.ready에서 호출 될 하나의 메소드 체인에 추가됩니다. – Vlad