2012-02-01 2 views
1

현재 특정 필드를 변경하면 PHP 스크립트를 실행해야하는 ajax 호출을 설정했습니다. 스크립트는 먼저 페이지로드시 실행됩니다.jQuery Ajax는 한 번만 실행되지만 매번 호출해야하는 것처럼 보입니다

AJAX 전화

$j.ajax({url: prod_json_url, dataType: 'json', cache: true, 
    beforeSend: function(xhr) { 
    xhr.overrideMimeType('text/plain; charset=x-user-defined'); 
    }, 
    success: function(data) { 
    //things to do on success with JSON 
    } 
}); 

모든 테스트를 위해 내 가상 환경에서 잘 작동하지만, 내가 다른 서버에이를 배포 할 때 다음과 같은 상황이 발생합니다.

1) 페이지로드시 실행중인 FireBug의 URL을보고 정확한 JSON 응답을 반환 할 수 있습니다. 로깅은 실행될 스크립트로 갔다가 올바른 데이터를 반환한다는 것을 보여줍니다. 모든 것이 그것이해야하는대로 행동합니다.

2) 필드를 업데이트하려면 클릭하십시오. 콘솔에서 Firebug를 다시 보면 올바른 URL이 실행되고 있지만 JSON 응답이 올바르지 않습니다. 그것은 페이지로드시 발생하는 것과 동일한 것을 유지합니다. 로깅을 추가하면 실제로 업데이트 된 URL에 도달하지 못하는 것처럼 보입니다. (업데이트 된 인수가있는 페이지로드와 동일한 URL 임).

3) 잠시 기다렸다가 다시 시도하면 가끔씩 다시 실행해야하지만 한 번만 실행하면됩니다.

이 문제는 캐시 문제라고 생각합니다. 누구든지이 문제를 해결할 수있는 방법이나 내가 찾고 있어야하거나 확인해야하는 변수에 대한 아이디어가 있습니까? 데이터베이스가 정확히 동일하고 다른 원인이 무엇인지 모르겠습니다. 어떤 도움이라도 대단히 감사합니다! 더 많은 정보가 도움이 될지 알려주십시오.

+0

'cache : true'를'cache : false'로 변경하고 캐시를 지우는 지보십시오. –

+0

어떤 서버 측 언어를 사용하고 있습니까? 거기에서 헤더를 제어 할 수 있으며'$ .ajax' 캐시를 비활성화해야합니다. – yoda

+0

죄송합니다. 이전에 cache : false를 업데이트했으며 다른 서버에서도 제대로 작동하지 않았습니다. 항상 테스트에서 작동합니다. @yoda PHP를 사용하고 있습니다. – Rosemary

답변

0

시도에서 복사 시도 따라서 IE에서 Ajax 요청을 무시하므로 cache:false은 충분하지 않습니다. 이것은 비록 작동해야합니다.

$.now()new Date().getTime()의 지름길입니다.

+0

문제는 prod_json_url이 너무 길어서 인수가 변경 되더라도 캐싱 구현은 매번 동일한 URL로 보았습니다. URL에 더 일찍 추가하면 캐싱과 관련된 문제가 해결됩니다. 고맙습니다! – Rosemary

0

캐시를 false로 설정하십시오.

prod_json_url + '?ts=' + $.now()'

캐시 제어 HTML 헤더가 분명히 있습니다 : 프로그래머 클라이언트 캐싱처럼 보인다 것은

+0

클라이언트 캐싱이지만 필드가 업데이트 될 때 어떻게 또는 왜 ajax 호출을 만드는 데 영향을 줄지 확실하지 않습니다. 그게 내가 고쳐야 할 것이지만, 그것이 문제가 될지 또는 그 문제를 해결해야하는지 잘 모르겠습니다. – Rosemary

0
$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

데이터를로드하는 URL에 현재 시간을 추가하는이 limk

관련 문제