Mozilla에서 Firefox 3.0.10에서 작동하도록 REST 웹 서비스를 사용하는 샘플 코드를 얻으려고합니다. 다음 코드는 Firefox에서는 작동하지 않지만 Internet Explorer 8에서는 작동하지 않습니다!Mozilla의이 XMLHttpRequest 샘플이 Firefox 3에서 작동하지 않는 이유는 무엇입니까?
- 왜 작동하지 않습니까?
- IE 8은 XMLHttpRequest를 지원합니까? 내가 본 대부분의 예제는 ActiveX 할당을 사용합니다. 나는 무엇을해야만 하는가? XMLHttpRequest가 표준화 된 것 같습니다.
샘플 : 열린 문은 설명과 함께 예외를 던지고있다
var req = new XMLHttpRequest();
req.open('GET', 'http://localhost/myRESTfulService/resource', false); // throws 'undefined' exception
req.send(null);
if(req.status == 0)
dump(req.responseText);
'정의되지 않은'. 이것은 req 객체를 할당하고, Firefox에서 실행하고, open (이 객체가 'object'유형이라고합니다)을 호출하기 전에 정의되어 있는지 확인하기 위해 검사하는 것이 이상합니다.
나는 또한이 비동기 버전을 사용해 보았습니다.
편집 2 :
function createRequestObject() {
if(window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
function handleResponse(req) {
document.writeln("Handling response..."); // NEVER GETS CALLED
if(req.readyState == 0) {
document.writeln("UNITIALIZED");
}
else if(req.readyState == 1) {
document.writeln("LOADING");
}
else if(req.readyState == 2) {
document.writeln("LOADED");
}
else if(req.readyState == 3) {
document.writeln("INTERACTIVE");
}
else if(req.readyState == 4) {
document.writeln("COMPLETE");
if(req.status == 200) {
document.writeln("SUCCESS");
}
}
}
document.writeln("");
var req = createRequestObject();
try {
document.writeln("Opening service...");
req.onreadystatechange = function() { handleResponse(req); };
req.open('POST', 'http://localhost/test/test2.txt', true); // WORKS IN IE8 & NOT FIREFOX
document.writeln("Sending service request...");
req.send('');
document.writeln("Done");
}
catch(err) {
document.writeln("ERROR: " + err.description);
}
편집 : 3 : 아래는 내 가장 최근의 코드 좋아, 내가 jQuery를이 재 작업. jQuery는 IE에서 잘 작동하지만 파이어 폭스에서 실행될 때 '정의되지 않음'을 던집니다. 나는 이중 체크를했고 파이어 폭스에서 '자바 스크립트 사용'이 켜져있다 - 다른 모든 웹 페이지에서 잘 작동하는 것 같다. 솔루션의
function handleResponse(resp) {
alert("Name: " + resp.Name);
alert("URL: " + resp.URL);
}
$(document).ready(function() {
$("a").click(function(event) {
try {
$.get("http://localhost/services/ezekielservices/configservice/ezekielservices.svc/test",
"{}",
function(data) { handleResponse(data); },
"json");
}
catch(err) {
alert("'$.get' threw an exception: " + err.description);
}
event.preventDefault();
});
}); // End 'ready' check
요약 :
좋아, 웹 강의 (101) 내 문제는 도메인 간 참이었다 다음은 jQuery 코드입니다. 게시 된 서비스에 타격을 가한 게시되지 않은 사이트 (파일 시스템)를보고있었습니다. 동일한 도메인으로 사이트를 게시했을 때 사이트가 작동했습니다.
또한 IE와 Firefox간에 중요한 차이가 있습니다. Internet Explorer는이 시나리오를 경험할 때 사용자가 도메인 간 호출을 수락하는지 여부를 묻는 메시지를 표시합니다. Firefox에서 예외가 발생합니다. 예외는 있지만 괜찮 으면 좋겠지 만 좀 더 자세한 설명이 도움이 될 것입니다.
나를 도와 주신 모든 분들께 감사드립니다.
나는 내 서버에서 새 "약간 수정 된"코드를 사용했습니다. 그것은 파이어 폭스에서 작동합니다 3. 체크 아웃 : http://dogself.com/telluriumTest/test.htm 나는 더 나은 기록을 추가하고 그 끔찍한 document.write 쓰레기를 제거합니다. – mkoryak