2010-08-22 57 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服務器加載的頁面的跨域功能。

相關問題