我正在使用破折号开发iPhone网络应用程序。当我用iphone模拟器浏览它时,我的应用运行正常。当我将它部署到Web服务器时,我从未收到XMLHttpRequests的响应。这是我使用的代码:
function get(feedURL, handler) {
var onloadHandler = function() { handler(xmlRequest); };
var xmlRequest = new XMLHttpRequest();
xmlRequest.onload = onloadHandler;
xmlRequest.open("GET", feedURL);
var credentials = encodeBase64(_login.username + ':' + _login.password);
xmlRequest.setRequestHeader("Authorization", "Basic " + credentials);
xmlRequest.send();
}
当我附加onreadystatechange处理程序时,我可以看到请求进入状态4.我还可以在服务器日志中看到请求。我还添加了一个“无缓存”请求标头,这没有帮助。我在我所拥有的托管包上的本地网络服务器上尝试了这个,我没有运气好运。
答案 0 :(得分:2)
在黑暗中拍摄,但apple docs说出来。
网址请求的域名 目的地必须与 提供包含页面的页面 剧本。不幸的是,这意味着, 客户端脚本无法获取 来自其他来源的网络服务数据, 并将该数据混合到页面中。 一切都必须来自同一个 域。在这种情况下,你 不必担心安全问题 警告吓坏了你的用户。
status和statusText的值是什么?还可以尝试使用getAllResponseHeaders()获取更多信息。
此外,如果它只是您想要的基本身份验证,您可以将其传递给open(),如下所示:
open("method", "URL", asyncFlag, "userName", "password")
答案 1 :(得分:1)
由于您手动设置了请求标头,因此iPhone可能不会期望接收Basic Auth标头。尝试将用户名和密码添加到URL(在编码百分比之后)并以此方式运行请求。
答案 2 :(得分:0)
也许尝试一下DashCode 3.0(Snow Leopard的新功能)的新调试功能?不是真正的答案,但也许改变风景 - 或者新的调试器 - 会让事情变得松散。