我有一个adobe air应用程序,我使用Dreamweaver CS5作为我的IDE。当我预览应用程序时,一切都很完美。当我创建应用程序并尝试运行它时,我运行的第一个XMLHttpRequest失败。我认为这是一个安全问题,但我不知道。
我每次都收到'无效'密码消息,因为domainCOM.status返回的状态为0。
更新:我安装了一个应用程序来观察XMLHttpRequest,它说我的状态为200,我可以看到返回正确的XML。 adobe air的这种menas以某种方式将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)
每当我在网络浏览器中获得状态代码0
时,通常意味着我正在发出跨域请求,浏览器只是放弃请求。你的JS文件是否加载到application sandbox?虽然我还没有尝试过,但Air允许在应用程序沙箱中使用[跨域AJAX请求],但是严重限制了从Web服务器加载的页面的跨域功能。