>  기사  >  웹 프론트엔드  >  Jquery는 IE7_jquery에서 $.ajax 솔루션을 사용할 수 없습니다.

Jquery는 IE7_jquery에서 $.ajax 솔루션을 사용할 수 없습니다.

WBOY
WBOY원래의
2016-05-16 18:42:081451검색

소스 코드를 보니

코드 복사 코드는 다음과 같습니다.

// 요청 개체를 생성합니다. Microsoft는
// IE7에서 XMLHttpRequest를 제대로 구현하지 못했기 때문에 사용 가능한 경우 ActiveXObject를 사용합니다.
// 이 함수는 jQuery.ajaxSetup을 호출하여 재정의할 수 있습니다.
xhr :function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest()
},

다음은 이 버전입니다. jquery 소스 코드
코드 복사 코드는 다음과 같습니다.

/*
* jQuery JavaScript Library v1.3.2
* http:/ /jquery.com/
*
* Copyright (c) 2009 John Resig
* MIT 및 GPL 라이센스
에 따라 이중 라이센스가 부여되었습니다. http://docs.jquery.com/License
*
* 날짜: 2009-02-19 17:34:21 -0500 (2009년 2월 19일 목요일)
* 개정: 6246
*/

a "window.ActiveXObject"를 html로 인쇄한 결과 IE6, IE7, IE8이 모두 true를 반환한다는 것을 알 수 있습니다.
테스트된 html 소스 코드는 다음과 같습니다. 같은 디렉토리에 index.jsp라는 이름의 페이지가 있으면 내용은 상관없습니다.)
코드 복사 코드는 다음과 같습니다.



title>여기에 제목 삽입


;div>




시나리오 1:
소스 코드가 수정되지 않으면 "성공" IE6에서는 " 프롬프트가 팝업되지만 IE7에서는 프롬프트가 없으며 오류 프롬프트도 없습니다.
사례 2:
window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest()
window.ActiveXObject( ): new XMLHttpRequest();
IE7에서는 "성공" 프롬프트가 표시되지만 IE6에서는 js 오류가 표시됩니다. 세부 정보는 아마도 "XMLHttpRequest 객체가 정의되지 않았습니다"입니다.
두 경우 모두 FireFox는 정상적으로 프롬프트할 수 있습니다. "성공", 버전은 FireFox3.5.3이며 다른 브라우저에서는 알 수 없습니다.
IE7은 ajax 객체를 초기화하기 위해 new XMLHttpRequest()를 사용해야 하고, IE6은 new ActiveXObject("Microsoft.XMLHTTP")를 사용하는 것을 볼 수 있습니다.
그러나 jQuery 소스 코드는 IE7의 초기화 방법과 호환되지 않습니다. , 공식 웹사이트 호환성 참고 사항은 IE6입니다.
내가 잘못 이해한 걸까요, 아니면 다른 게 있는 걸까요? 제게 조언을 해주셨으면 좋겠습니다. jQuery는 사용하기 쉽지만 고객에게 IE7 대신 IE6을 사용하도록 요구할 수는 없습니다.
마지막 문장:
최신 버전의 프로토타입 1.6.1에도 같은 문제가 있습니다. IE7에서는 Ajax.Request가 1130줄 정도 소스 코드를 변경해야 합니다




코드 복사


코드는 다음과 같습니다.
var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')},
//function() {return new ActiveXObject ('Msxml2.XMLHTTP.4.0')},
function() {return new ActiveXObject('Microsoft.XMLHTTP')}
) || false;
변경사항은 댓글로 추가해야 할 부분입니다.
이렇게 하면 IE7에서 이 ajax 요청 방법을 사용할 수 있습니다.
근데 잠깐 살펴보면 여기서 ajax 초기화는 먼저 new XMLHttpRequest()를 사용해 생성되는데, 즉
수정하지 않으면 IE7에서 할 수 있을 텐데.
참고: 마지막 한 문장의 IE7 호환성 방법은 인터넷에서 발견되었습니다.
위 내용은 제가 오늘 조사한 결과인데, IE6과 완전히 호환되는 jQuery의 목적이 무엇인지 매우 혼란스럽습니다. IE7과 IE8은 어떻게 구현하나요?(FireFox 등에 영향을 줄 수 없습니다.)
결론은 다음과 같습니다.
IE7은 ajax 객체를 초기화하기 위해 new XMLHttpRequest()를 사용해야 하고 IE6은 new를 사용하는 것을 볼 수 있습니다. ActiveXObject("Microsoft.XMLHTTP")
그러면 프로토타입에서는 어떻게 설명하나요?
혼란스럽네요. 조언을 해주셨으면 좋겠습니다!
방금 XMLHttpRequest 생성 방법에 대해 다시 검색하고 마침내 소스 코드를
return window.XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest로 수정했습니다. () ;
그러면 IE678과 FF가 모두 실행될 수 있습니다.
드디어 해결되었습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Js_javascript 기술을 사용하여 테이블의 대체 행 색상을 변경하는 예다음 기사:Js_javascript 기술을 사용하여 테이블의 대체 행 색상을 변경하는 예

관련 기사

더보기