2010-08-22 55 views
0

我已经使用Dreamweaver CS5将IDE构建为Adobe AIR应用程序。当我预览应用程序时,一切正常。当我创建应用程序并尝试运行它时,我运行的第一个XMLHttpRequest失败。我认为这是一个安全问题,但我不知道。XMLHttpRequest在Adobe Air预览版中可用,但未编译的应用程序

我得到“无效”密码消息,因为domainCOM.status将返回0。

更新的状态,每一次:我安装的应用观看了XMLHttpRequest和它说,我得到一个状态200,我可以看到返回正确的XML。这是menas Adob​​e AIR在某种程度上使得200的状态为0。

UPDATE2:如果我在预览运行它,我得到

的readyState 2,状态200 的readyState 3,状态200 的readyState 3,状态200 的readyState 4,状态200

,但如果我在编译的版本上运行它,我只得到

的readyState 4,状态0

好像它没有做任何事情,但我可以看到实际的XHR拨打电话并使用Fiddler2返回。

非常奇怪。

任何帮助/想法,将不胜感激。下面的代码片段:

var url = "http://open-api.domain.com/authentication.getUserToken.domain"; 
var vars = "v=3&appKey="+appKey+"&email="+email+"&password="+password; 

var domainCOM = new XMLHttpRequest(); 
domainCOM.open("POST", url, true); 
domainCOM.setRequestHeader ("Content-type", "application/x-www-form-urlencoded"); 
domainCOM.setRequestHeader ("Content-length", vars.length); 
domainCOM.setRequestHeader ("Connection", "close");   

domainCOM.onreadystatechange = function() {  
    if (domainCOM.readyState == done) { 
     if (domainCOM.status == ok) { 
     if (domainCOM.responseText) { 
      //do some stuff 
     } 
     else { 
      window.alert('unknown error in authenticationGetUserToken.'); 
     } 
     } 
     else {    
      window.alert('Password/Userid combination is not valid. Please correct and try again.'); 
     }  
    } 
}; 
domainCOM.send(vars); 
return; 

感谢, 凯西

回答

0

每当我在网络浏览器获取状态代码0,这通常意味着我正在做一个跨域请求和浏览器简单地下降请求。您的JS文件是否在application sandbox中加载?虽然我还没有尝试过,但Air允许应用程序沙箱中的[跨域AJAX请求],但已经严重限制了从Web服务器加载的页面的跨域功能。

相关问题