2016-06-15 3 views
4

내 AngularJS 앱에서 아래와 같이 HTTP GET 요청을 보내고 있습니다.캐시 된 데이터를 반환하는 AngularJS HTTP GET 요청

MyService.HttpReq("testUrl", "GET", null); 

HttpReq 방법은 서비스에 정의하고 다음과 같이 구현됩니다 모든

this.HttpReq = function(URL, method, payload) 
{ 
    $http({ 
     url: URL, 
     method: method, 
     cache: false, 
     data: postData, 
     headers: { 
      'Content-Type': 'application/json', 
     } 
    }).success(function(response) 
    { 
     console.log("Success: "+JSON.stringify(response)); 

    }).error(function(data, status) 
    { 
     console.error("Error"); 

    }); 
} 

먼저이 AngularJS와의 HTTP 요청을 전송의 올바른 방법인가?
내가 직면하고있는 문제는 때때로 응답으로 캐시 된 데이터를 얻고 HTTP 요청이 서버에 부딪치지 않는다는 것입니다. 무슨 문제가 될 수 있니?

UPDATE

주석과 나는 다음과 같이 내 HTTP 요청 코드를 업데이트 한 대답으로 당

,하지만 여전히 같은 문제가 점점.

this.HttpReq = function(URL, method, payload) 
{ 
    $http({ 
     url: URL, 
     method: method, 
     cache: false, 
     data: payload, 
     headers: { 
      'Content-Type': 'application/json', 
      'Cache-Control' : 'no-cache' 
     } 
    }). 
    then(
     function(response) 
     { 
      var data = response.data; 
      console.log("Success: "+JSON.stringify(data)); 
     }, 
     function(response) 
     { 
      var data = response.data || "Request failed"; 
      var status = response.status; 
      console.error("Error: "+JSON.stringify(data)); 
     } 
    ); 
} 
+0

HttpReq 메소드에서 어떤 방법을 사용합니까? GET 또는 POST .. 아니면 둘 다? –

+0

GET 및 POST 모두 사용 – User7723337

+0

.success 및 .error는 더 이상 사용되지 않으며 대신 2 개의 콜백 함수를 사용하십시오. – gyc

답변

1

그냥 캐시를 추가 거짓 속성을 설정 객체.

https://docs.angularjs.org/api/ng/service/$http#caching

또한 당신은 헤더를 추가 할 수 없습니다 : '캐시 제어를'우리는 응답을 캐시 제어 헤더를 추가하는 경우에도 요청을받을 아약스 잡을 것 '에는 캐시'

+0

업데이트 된 질문을 확인하십시오. 이제 막 'cache : false'를 시도했지만 아직 캐시 된 데이터가 표시됩니다. – User7723337

+0

$ http는 기본적으로 데이터를 캐시하지 않습니다. – gyc

+0

내가하고있는 통화가 순서대로 성공했는데 다른 통화를 요청한 통화가 성공했다는 것이 맞습니까? – User7723337

2

IE 브라우저를. 유일한 방법은 내가 문제를 해결하기 위해 발견 임의의 매개 변수를 요청에 추가하는 것입니다. 추가 매개 변수를 보내더라도 API가 문제가 없는지 확인하십시오.

MyService.HttpReq("testUrl?ts=" + Date.now(), "GET", null); 
+0

OH! 나는 테스트를 위해 크롬을 사용하고 있지만 여전히이 문제에 직면하고 있습니다. – User7723337

+0

요청에 캐시 제어 헤더를 추가하는 용도는 없습니다. 서버 측의 응답 헤더로 설정해야합니다. 예와 같이 타임 스탬프와 같은 임의 매개 변수를 추가하십시오. 그것은 작동해야합니다. –