2011-04-07 55 views
4

我正在開發Blackberry webworks應用程序,並且遇到了我正在向服務器發出的AJAX請求。我正在學習HTML/Javascript/AJAX,所以請原諒任何初學者的錯誤。基本上,格式化的HTTP請求發送到服務器,該服務器返回我在應用程序中使用的JSON對象。我使用AJAX來製作沒有任何框架的請求。 大多數請求都不需要進行身份驗證,而且這些請求返回的很好。但是,要訪問服務器的目錄部分,用戶名和密碼將被編碼並作爲XMLHTTPRequest的標頭髮送。當我嘗試添加標題時,會發送請求,但我從未收到任何回覆。 readyState屬性設置爲1,但永遠不會超出此範圍。我知道服務器工作正常,因爲我爲iPhone做了同樣的事情,並且工作。在Blackberry Webworks上發送帶有標題的AJAX請求時出現問題

下面是相關代碼:

function grabFromServer(httpRequest){ 
httpConnection = new XMLHttpRequest(); 
var me = this; 
httpConnection.onreadystatechange=function(){ 
    alert(httpConnection.readyState); 
    if(httpConnection.readyState==4){ 
     me.processResponseText(httpConnection.responseText); 
    } 
}; 
httpConnection.open("GET", httpRequest,true); 

if(this.request == "company" || this.request == "property" || this.request == "individual"){ 
    var authorized = this.checkCredentials(); 
    if(!authorized){ 
     //ask for username pword 
    } 
    //here, add credentials 
    httpConnection.setRequestHeader("Authorization", "Basic : ODI5ZGV2bDokY19kdXN0Ym93bA=="); 
} 
httpConnection.send(); 

}

回答

1

您的代碼似乎是不錯的。你是否在你的config.xml文件中添加了一個條目以允許訪問你的域名?您應該看到類似<access subdomains="false" uri="http://data.mycompany.com/"/>的條目。要從WebWorks應用程序向外部網站發送任何HTTPRequest,您必須像這樣添加一個條目到「白名單」域。

如果您使用的是eclipse插件,請打開config.xml文件,單擊底部的權限選項卡,然後單擊「添加域」。

+0

是的,我的config.xml中添加了正確的域和子域。當「IF」語句返回true時,我只調用setRequestHeader方法。否則,我只是發送請求,並且工作正常。只有當我不添加一個沒有任何反應的標題時。 – user697286 2011-04-11 15:45:02

+0

對不起,更正,只有當我添加一個沒有任何反應的標題時。 – user697286 2011-04-11 16:36:39