캐시 때문에 AJAX로 받는 문서가 갱신이 안되는 등의 문제가 특히나 IE에서 잘 발생 한다.

보통은 해더를 아래와 같이 하면 해결되는데..

header("Pragma: no-cache");

IE에서 잘 동작이 안된다..
그때는 아래와 같이 해더를 설정한다.
header("Pragma: no-cache");
header("Cache-Control: no-cache,must-revalidate");
header("Expires: 0"); // 요게 효과가 큰듯 -ㅅ-;;;

오래간만에 PHP를 하니 기억이 새록새록~ +_+

아...꼬박 이틀동안 삽질했다 -_-;;;;
jQuery를 배워보고자 어제부터 즐겨하는 게임을 위해(WOW) PostgresSQL+PHP+jQuery로 간단한 프로그래밍을 시작하였다.

암튼!
jQuery로 AJAX와 XML 처리가 간단하다고 하여...요즘 트랜드라고도 하고...해서...
jQuery로 해당 부분을 시험삼아 개발하고 있는 중...
Iron(≒크롬)과 Firefox에서는 정상동작 하지만 IE(익스플로러)에서는 동작하지 않는 것을 발견하였다.

먼저 처리할 XML 문서는 다음과 같다.
<?xml version="1.0" encoding="UTF-8" ?><Users>
    <user id="1" userid="test2" name="체리" time_stamp="1259052018" />
    <user id="2" userid="test" name="테스트" time_stamp="1259052020" />
</Users>

이렇게 문서가 정상적으로 처리되는 것을 확인하였고 각 브라우저에서도 제대로 읽히는 것을 확인하였다.
하지만...다음의 자바스크립트 코드로 읽어보니...IE에서만 동작하지 않는 것이다.
$.ajax({
	type: "GET",
	url: "<?=$wow['path']?>/ajax/userlist.php",
	dayaType:"xml",
	success: processXML});

function processXML(xml){
	var i = 0;
	$(xml).find('user').each(function() {
		$("#userTable").append("<tr id=\"userTableRow_"+(i)+"\">"
		+"<td><a href=\"javascript:deleteRow('userTableRow_"+(i++)+"');\">삭제</a></td>"		+"<td>"+$(this).attr("userid")+"</td>"
		+"<td>"+$(this).attr("name")+"</td>"
		+"<td>"+$(this).attr("time_stamp")+"</td>"
		+"</tr>");
	});
	displayFootCaption('userTableFoot', $("#userTable tbody tr").length);}

이것저것 하다 알아보니 $(xml).find("user")에서 find() 함수가 동작하지 않는 것을 확인하였다..
왜 그럴까..왜 그럴까...무지하게 고민하고 책도 보고 인터넷도 찾아보고 하는 도중..
아래의 블로그를 찾아내었다.
결론을 말하면..
IE에서 해더 없이는 XML로 제대로 인식이 안 된다는 것이었다.
왜!!!!!!!!!! 왜!!!!!!! 그냥 문서를 직접 URL 타이핑 해서 읽을 땐 XML로 잘 인식을 했냔 말이다 ㅠㅠ

위의 블로그에 해결 방안들을 제시하고 있지만, XML 문서를 생성하는 소스를 수정하는 것이 제일 정직하고 확실한 방법인 것 같다.
아래와 같이 해더를 추가해 주면 된다.
PHP로 개발하고 있는 것이기에 아래와 같이...
header('content-type:application/xml; charset=utf-8');

PHP가 아니라 다른 언어로 개발 중이라면 위의 내용과 맞게 수정해 주면 된다.
단, 지금 개발 하는 것이 UTF-8로 개발하고 있기에 위의 코드가 나오는데..
euc_kr이나 다른 언어로 개발 중이라고 하면 해당 언어 코드로 변경을 해 주어야 하는 것은 당연!!

감사합니다. LazyGyu님! ^^
  1. Favicon of http://lazygyu.tistory.com BlogIcon LazyGyu 2009.11.25 20:10 신고

    제 포스팅이 도움이 되셨다니 제가 더 기쁘네요 ㅠㅠ

    • Favicon of http://www.specialguy.net BlogIcon 체리 2009.11.26 23:32 신고

      감사합니다. 덕분에 앓는이 뺀 기분이예요 ㅎㅎ

  2. ㅁㄴ 2011.04.03 04:37 신고

    헤더를 바꾸는것도 그렇고 링크 가서도 원하는 답을 얻었네요..감사합니다..

    • Favicon of http://www.specialguy.net BlogIcon 체리 2011.04.14 21:06 신고

      저도 해당 링크에서 많은 도움 받았습니다.
      감사합니다 ^^

  3. 베리굿 2012.07.07 23:27 신고

    큰 도움이 될 것 같습니다.

    해결된다면 많은 시간을 아낄수 있을것 같네요 ^^

+ Recent posts