2010-07-12 1 views
1

참고 : previous question과 관련이 있습니다.jQuery Java/Wicket 서버에 대한 AJAX 호출이 IE (6/7/8)에서 응답 없음

Wicket 대신에 jQuery를 사용하기로 결정한 복잡한 클라이언트 측 상호 작용이있는 양식이있는 Wicket 페이지가 있습니다 (자세한 내용은 알고 있습니다). 본질적으로 저는 JSON 객체를 만들고, AJAX를 통해 제출하고, 완료 할 때 어떤 작업을 수행하고 있습니다. 이 호출은 Firefox에서는 정상적으로 작동하지만 IE 버전에서는 정상적으로 작동하지 않습니다. 나는 관계없는 쉼표가 없다는 것을 이미 확인했다. 코드는 다음과 같습니다.

var lookup = { 
    'name': name, 
    'description': description, 
    'items': [{ 
     'name': itemName, 
     'value': itemValue 
    }] 
}; 

$.ajax({ 
    type: 'post', 
    url: '${callbackURL}', // This file is parsed by Wicket and receives a dynamic callback URL here. This is not jQuery! 
    cache: false, 
    data: {'lookup': JSON.stringify(lookup)}, 
    contentType: 'application/json', 
    complete: function() { 
     alert('This never gets called in IE!') 
    } 
}); 

의견이 있으십니까? 감사!

업데이트 : 내 문제는 IE 캐싱 리소스로 인해 나타납니다. HTML 파일에 no-cache 코드를 넣었지만 페이지가 여전히 캐싱되고 (확장에 따라 JS가 참조하는) JS 파일이 내 jQuery 코드와 함께 캐싱되고있는 것 같습니다. 이전 콜백 URL을 사용하여 더 이상 해당 URL에 아무것도 없으므로 서버가 응답하지 않습니다. 예쁜 URL을 제거하면 모든 것이 잘 작동합니다 (Wicket이 URL을 생성 할 때마다 고유하므로). 그래도 서버 응답이 없더라도 complete 함수가 호출되지 않아야합니까?

+0

문제의 코드를 게시하는 것이 많은 도움이됩니다. HTTP 요청이 실제로 발생하는지 확인 했습니까? IE8 디버거로 그걸 밟았습니까? – Pointy

+0

초기에 코드를 게시하지 않으셔서 죄송합니다. 나는 내 질문을 게시하는 중간에 떠나야 만했고, 거기서 그것을 얻고 싶었다. AJAX 요청이 만들어지고 있습니다 (요청에서 데이터가 성공적으로 유지됩니다).하지만 콜백이 실행되지 않습니다. 예외는 발생하지 않습니다. (try/catch에서 호출을 감싸고 캐치에 넣지 않았습니다.) $에 'error : function (request, status, err) {...}'을 추가했습니다. .ajax()를 호출하여 오류가 반환되지 않았 음을 확인합니다. – Jared

답변

0

이것은 공격적인 IE 캐싱 때문이었습니다. URL에 고유하게 생성 된 매개 변수를 추가하여 브라우저가 매번 새로운 URL로 생각할 수 있도록 해결되었습니다.

0

AJAX 전화를 걸 때 사용하는 코드를 게시 할 수 있으며 IE에서 작동하지 않는 방법을 명확히 할 수 있습니까? 호출 AJAX 요청이 IE에서 작성되지 않았습니까? 요청이 오류를 반환 했습니까? 응답을 처리하는 데 문제가 있습니까?

일반적으로 이는 외부의 쉼표로 인한 것일 수 있지만 이미 배제 했으므로 Google에서 도움을 얻으려면 더 많은 정보가 필요합니다.

+0

호출에 dataFilter 매개 변수를 추가하여 해당 유형의 구문 분석 오류가 있는지 확인할 수 있습니다 (처리 된 오류가 처리되기를 기대하지만 요청에 시간 초과를 추가 할 수도 있음). IE가 전체 응답을받지 못하게하는 경우, 시간 초과 오류가 발생합니다. – Zam