2011-04-07 57 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