2009-08-25 89 views
1

我正在開發使用Dashcode一個iPhone的Web應用程序。當我用iphone模擬器瀏覽它時,我的應用運行良好。當我將它部署到Web服務器時,我從來沒有從XMLHttpRequests獲得響應。下面是我使用的代碼:iPhone Dashcode中的XMLHttpRequest沒有反應

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.我還可以看到我的服務器日誌的請求。我還添加了一個「無緩存」請求標題,這沒有幫助。我在託管軟件包上的本地Web服務器上嘗試過這種方法,但我沒有任何運氣能夠實現它。

+0

所以'responseText'是一個空字符串時'readyState'達到'4'? – kangax 2009-08-25 22:36:07

+0

是的,它是kangax – dlinsin 2009-08-26 04:08:16

+1

你是字母數字的用戶名和密碼嗎?我注意到使用標準的SDK,iPhone與Basic Auth有點差別。您是否嘗試使用http:// user:password @ host/path URL而不是手動設置標題? XML請求可能不打算處理它收到的基本身份驗證頭,作爲響應並且不返回任何內容。根據用戶名和密碼,您需要對它們進行百分比編碼以將其粘貼到URL中。 – 2009-09-16 07:21:21

回答

0

也許嘗試新的調試功能,是的Dashcode 3.0的一部分(雪豹新)?不是一個真正的答案,但也許風景的變化 - 或者新的調試器 - 將會動搖一些東西。

1

的iPhone可能不期望接收基本認證頭,因爲你手動設置請求頭。嘗試將用戶名和密碼添加到URL(百分號編碼後),然後以此方式運行請求。

2

在黑暗中拍攝,但apple docs這樣說。

URL請求 目的地的域名必須是一樣的 一個提供了包含 腳本的頁面。這意味着,不幸的是, 客戶端腳本無法從其他來源獲取 網絡服務數據,並將該數據混合到頁面中。 所有內容必須來自同一個 域。在這種情況下,你 不必擔心安全 提醒可怕的用戶。

什麼是狀態和狀態文本值是多少?另請嘗試getAllResponseHeaders()獲取更多信息。

而且,如果它只是基本身份驗證你願意,你可以通過它來打開()像這樣:

open("method", "URL", asyncFlag, "userName", "password")