2009-04-14 1 views
2

Ajax.Updater을 사용하여 양식을 제출하고 그 결과로 내 페이지에서 div 요소를 업데이트하려고합니다.프로토 타입의 Ajax.Updater가 IE7에서 실제로 업데이트되지 않음

모든 것이 IE6, FF3, Chrome 및 Opera에서 훌륭하게 작동합니다. 그러나 IE7에서는 산발적으로 작동하지만 더 자주하지는 않지만 단지 아무 것도하지 않는 것처럼 보입니다. 내가 PARAM은 내가 기대로 설정되어 있는지 alert() 호출을 사용하여 확인한

function testcaseHistoryUpdate(testcase, form) { 
document.body.style.cursor = 'wait'; 
var param = Form.serialize(form); 
new Ajax.Updater("content", "results/testcaseHistory/" + testcase, { 
    onComplete: function(transport) {document.body.style.cursor = 'auto'}, 
    parameters: param, 
    method: 'post' 
    } 
); 
} 

:

여기에 자바 스크립트입니다.

IE7 캐시를 공격적으로 읽었으며 근본 원인 일 수 있습니다. 그러나 모든 것이 PHP 응답에 추가 된 후에도 여전히 작동하지 않습니다.

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

더 난 그냥 모든 호출에 대해 서로 다른 매개 변수를 가지고 임의의 값으로 채워집니다 가짜 매개 변수를 추가 시도했다, 그러나 그것은 도움이되지 않았다 캐싱 문제를 해결하려고합니다.

는 또한 UTF-8 IE7에 문제를 일으키는 것 같았다 this 발견했지만, 내 페이지가 명확하게 표시되어

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

는 사람으로 IE7로 잘못 될 수 있는지 어떤 생각을 가지고 있습니까 이런 종류의 문제를 일으키기 위해 테스트 한 다른 브라우저에 반대 했습니까?

답변

2

즉, 양식 태그 안에있는 DOM id 요소에 대한 업데이트를 수행 할 수없는 것처럼 보입니다. 누구든지이 문제를 해결할 방법을 찾았습니까? 양식 태그 밖으로 이동하면 코드가 제대로 작동하고 양식 태그를 주석 처리하고 DOM 요소를 이동하지 않아도됩니다.

+0

ur 솔루션으로 인해 번거롭지 않게되었습니다. 감사! – umar

1

일반적인 문제는 extra comma problem 인 것 같습니다. IE가 하단 왼쪽 경고 아이콘을 제공하지 않는지 확인하십시오. IE에서 javascript의 유효성을 검사하지 않아서 원하는대로 실행할 수 없으므로 과거에이 문제가있었습니다.

+0

필자도 읽었으며 마지막 코드 뒤에는 쉼표가 없습니다. 나는 사실 쉼표를 추가하여 아무거나가 변경되었는지 확인하려고 시도했습니다 ... –

0

나는 정확히 같은 문제가 있습니다!

IE는 Ajax 호출을 실행, PHP 파일을 처리하지만, 화면에 NOT 디스플레이 아무것도 수행합니다 trial- & -error 접근 방식을 많이 후

, 나는 무슨 일인지 알아 냈어!

아무것도 "에코"에드, 또는 PHP 파일에서 "인쇄"에드는 사업부 (대상 = '숨겨진 DIV)에 표시되지 도착, 나 onComplete를 "경고" 화면에 표시됩니다!

그러나 모든 MySQL 호출이 작동 중입니다. 추가 할 코드를 추가하거나 데이터베이스에서 일부 foobar 레코드를 삭제하면 모두 작동합니다!

IE 캐싱 문제 일 수 있습니까?

0

필자에게 캐싱 문제와 같은 냄새가납니다. IE7 (및 IE6) 캐시가 특히 AJAX 호출과 같이 매우 적극적으로 캐시되고 캐시 제어 헤더를 잘못 무시하는 경우가 옳습니다.

일반적인 수정 사항은 "cachebuster"임의 매개 변수 을 URL (추가 POST 변수가 아님)에 추가하는 것입니다.

1

AJAX 문제와 관련이 없지만 인라인 요소를 블록 수준 요소로 업데이트하려고하면 IE에서 오류가 발생합니다. 이 당신에게 적용되는 경우를 테스트하려면 다음과 같이 코드를 포장 :

try { 
// Your code 
// something.update('...'); 
} catch(error) { 
alert(error.descripton) 
alert(error.number) 
} 

을 당신은 블록 레벨 요소와 블록 레벨 요소를 업데이트 있도록 HTML을 다시 정렬 오류 -2146827687을받을 경우.

0

IE는 캐싱과 관련하여 어리 석다. 나는 HTML/body 등이 전혀없는 작은 도우미 페이지를 가지고있어서 안티 캐싱을 할 수 없었습니다.

URL var 아이디어는 작동합니다.

var cacheBuster = parseInt(Math.random() * 99999999); // cache buster 
    new Ajax.Updater(elementId, '/Helpers/PendingChanges.aspx?Cache=' + cacheBuster); 

또한 charset에 대한 행을 추가 할 때까지 IE8에서 '지정되지 않은 오류'가 발생했습니다.