2012-03-02 3 views
1

BlackBerry Phonegap 응용 프로그램을 개발 중입니다. 따라서 JavaScript를 사용하고 있습니다.XMLHttpRequest (PhoneGapp BlackBerry App 용)를 사용하여 서버에서 데이터 가져 오기

로컬 파일에서 서버에있는 일부 데이터 (기본 텍스트)를 가져 오려고합니다. 나는 다른 브라우저 (Mozilla와 Chrome을 주로)에서 노력하고있다.

try{ 
    request = new XMLHttpRequest(); 
    request.onreadystatechange = processResults; 
    request.open('GET', url, false); 
    request.send(); 
}catch(e){ 
    alert('exception performing data request: ' + e.name + '; ' + e.message); 
} 

을 그리고 콜백 :

function processResults(){ 
    if(request.readyState == 4){  
     if(request.status == 200){ 
      document.getElementById('divResults').innerHTML = request.responseText; 
     }else{ 
      alert("Error! Status" + request.status + " - " + request.statusText); 
     } 
    } 
} 

난 데 문제는 데이터가 결코 가져온입니다 다음과 같이 내가 사용하고 코드입니다.

NS_ERROR_FAILURE; Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) 

나는 몇 가지 조사를하고 이러한 문제의 가장 흔한 원인은 동일 출처 정책 : 예외는 다음과 같은 오류를 반환합니다. 그러나, 나는 전에 비활성화 확신 : 방화범 그냥 오류가 request.send() 라인에 있지만 더 이상의 정보를 제공 없다고 지적

try { 
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); 
} catch (e) { 
    alert("UniversalBrowserRead failed"); 
} 

. xmlHTTP status은 0이지만, request.statusText은 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 미리 감사드립니다 :).

+0

XHR에 대한 콜백은 어디에 있습니까? –

+0

코드를 포함하여 추가되었습니다. – Arturo

답변

0

해결책은 Internet Explorer에서 응용 프로그램을 테스트하는 것으로 믿거 나 말거나. IE에서는 오류 메시지가 나타나지 않고 모든 것이 예상대로 작동했습니다. 많은 테스트를 거친 후이 코드가 저에게 효과적이었습니다. 다른 사람에게 유용하기를 바랍니다 :

// Create the XHR object. 
// For non-IE browsers (Chrome, Mozilla, Opera, Safari, etc.). 
if(XMLHttpRequest){ 
    request = new XMLHttpRequest(); 
// For IE. 
}else if(ActiveXObject){ 
    try{ 
     request = new ActiveXObject('Msxml2.XMLHTTP'); 
    }catch(e){ 
     request = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 
}else{ 
    alert('Could not create XMLHTTP request object'); 
} 

// Request the data. 
try{ 
    request.onreadystatechange = function(){ 
     if(request.readyState == 4 && request.status != 200){ 
      console.log(request.responseText); 
      alert("Error! Status " + request.status + " - " + request.statusText); 
     } 
    }; 
    request.open('GET', targetURL, false); 
    request.send(); 

}catch(e){ 
    alert('Error while performing the request: ' + e.name + '; ' + e.message); 
} 

// Empty the content into a proper JavaScript variable. 
var text = request.responseText; 
var xmlText = eval("(" + text + ")"); 
// Just fetch the data you want from the xmlText object.