2012-03-02 12 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) 

私はいくつかの研究を行なったし、これらの問題の最も一般的な原因は、同一生成元ポリシー:例外は、次のエラーを返します。しかし、私は前にそれを無効にしてください午前:Firebugのは、ちょうどエラーが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. 
関連する問題