0

데이터베이스에 대해 ID를 확인하는 기능이 있습니다. ID가 발견되면 함수는 true를 반환하고 그렇지 않으면 false를 반환합니다.자바 스크립트 내 도메인 간 요청 (IE8)

다른 브라우저에서 작동하도록 요청 받았습니다. 이제 Internet Explorer의 XDomainRequest로 알아 내려고 노력하고 있습니다.

function verify(id){ 
    xmlhttp=new window.XDomainRequest(); 
    xmlhttp.onload = checkResponse; 
    xmlhttp.open("GET", "http://abc.com/verify?id=" + encodeURIComponent(id)); 
    xmlhttp.send(); 

    function checkResponse(){ 
     if(xmlhttp.responseText == 200) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

문제는 checkResponse 함수가 아니라 false를 반환하는 것이 좋습니다.

open (거짓)을 false로 설정 한 다른 브라우저에서는 트릭을하지만 IE에서는 그렇지 않습니다.

jQuery가 응답하지 않습니다.

도움 주셔서 감사합니다.

+0

하게 AJAX의 동기가 패배는 목적의 IT에 콜백 함수를 전달하고 비동기를 유지하는 것이 좋습니다. – Joseph

+0

다른 제안이 있으십니까? – Enkay

답변

4

다음은 IE8에서 CORS 요청을 jQuery에 통합하는 데 권장되는 방법입니다. 당신은 아마 자신을위한 시작 지점으로 사용할 수 있습니다 :

https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js

또한, verify은 동기 운전해서는 안됩니다. 당신은 다음과 같이 부를 수

function verify(id, callback){ 
    var xmlhttp = new window.XDomainRequest(); 
    xmlhttp.onload = function() { 
     callback(xmlhttp.responseText === 200); 
    }; 
    xmlhttp.open("GET", "http://abc.com/verify?id=" + encodeURIComponent(id)); 
    xmlhttp.send(); 
} 

:

verify(123456, function (isValid) { 
    if (isValid) { 
     // do something if valid 
    } else { 
     // or not 
    } 
}); 
+0

답장을 보내 주셔서 감사합니다. 나는 이것을 단련하려고 노력하고있다. 이 함수는 데이터베이스에있는 ID를 기반으로 다른 UI를로드하는 데 사용되기 때문에 동기식입니다. – Enkay

+0

그럴 수도 있지만 사용자가 페이지에서 어떤 상호 작용을하지 못하게 할 수 있습니다. 비동기로 두는 것이 좋습니다. – Eli

+0

답변에 오타가있어 작동하도록했습니다. 감사 – Enkay

-2

당신이 고려해야 할 첫 번째 요점은 비동기로 작동하도록 js 코드를 변경하는 것입니다. 그렇지 않으면 checkResponse 만 응답해야합니다. 코드가 비동기식 인 것처럼 보이며 동기되어야합니다.

감사합니다.

+0

당신은 어떻게 그것을 synchonous하게 만들 것을 제안합니까? – Enkay

+0

그래, 확실히 동기화하지 않는 것이 좋습니다. 응답을 기다리는 동안 UI가 차단됩니다. – Eli

+0

http://msdn.microsoft.com/en-us/library/cc288168%28v=vs.85%29.aspx에서 정보를 확인하면 귀하의 전화가 동기 호출을 지원할 수없는 것으로 보이므로 코드를 변경해야합니다 , 콜백 함수를 사용해야합니다. – user1368365