【问题标题】:XMLHttpRequest works in Adobe Air preview but not compiled appXMLHttpRequest 在 Adob​​e Air 预览版中有效,但不适用于已编译的应用程序
【发布时间】:2010-08-22 13:47:56
【问题描述】:

我有一个 adobe air 应用程序,我一直在使用 Dreamweaver CS5 作为我的 IDE 来构建它。当我预览应用程序时,一切正常。当我创建应用程序并尝试运行它时,我运行的第一个 XMLHttpRequest 失败。我认为这是一个安全问题,但我不知道。

我每次都收到“无效”密码消息,因为 domainCOM.status 返回的状态为 0。

更新:我安装了一个应用程序来查看 XMLHttpRequest,它说我的状态为 200,我可以看到返回的正确 XML。这意味着 adobe air 正在以某种方式将 200 的状态变为 0。

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

readyState 2,状态 200 就绪状态 3,状态 200 就绪状态 3,状态 200 就绪状态 4,状态 200

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

就绪状态 4,状态 0

似乎它什么也没做,但我可以看到实际的 XHR 使用 Fiddler2 进行调用并返回。

很奇怪。

任何帮助/想法将不胜感激。这是sn-p的代码:

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;

谢谢, 凯西

【问题讨论】:

    标签: air xmlhttprequest


    【解决方案1】:

    每当我在网络浏览器中收到状态代码0 时,通常意味着我正在发出跨域请求,而浏览器只是放弃了该请求。您的 JS 文件是否在 application sandbox 中加载?虽然我还没有尝试过,但 Air 允许在应用程序沙箱中使用 [跨域 AJAX 请求],但极大地限制了从 Web 服务器加载的页面的跨域能力。

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多