【发布时间】:2009-09-19 03:48:45
【问题描述】:
我正在开发一个带有 dashcode 的 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。我还可以在我的服务器日志中看到这些请求。我还添加了一个“无缓存”请求标头,但没有帮助。我在我拥有的托管包上的本地网络服务器上尝试了这个,但我没有任何运气让它工作。
【问题讨论】:
-
所以当
readyState到达4时responseText是一个空字符串? -
您是字母数字用户名和密码吗?我注意到使用标准 SDK 时 iPhone 在使用 Basic Auth 时有点不稳定。您是否尝试过使用user:password@host/path URL 而不是手动设置标题? XML 请求可能不打算处理它在响应中接收到的 Basic Auth 标头,并且没有返回任何内容。根据用户名和密码,您需要对它们进行百分比编码以将它们粘贴到 URL 中。
-
当readyState达到4时,status和statusText的值是多少?也可以尝试 getAllResponseHeaders() 了解更多信息
标签: javascript iphone xmlhttprequest dashcode