2009-09-30 251 views
5

我們正在開發iPhone Web應用程序,該應用程序使用大量的jQuery AJAX調用從XML Web服務提取數據。在Safari上對我的Mac進行開發和測試時,通話效果非常好。問題是,只要我們在iPhone模擬器或實際設備上測試,我們就沒有從Web服務獲取任何回報。JQuery Ajax請求無法在iPhone設備瀏覽器上工作

我已經轉向了「開發」菜單上,改變了「用戶代理」,以移動Safari瀏覽器,看看是否有差別,但它仍然適用於物聯網的PC端。

我不認爲這是一個跨站點的限制,因爲所有的Ajax調用等來自同一服務器和端口號製成。

有沒有辦法我們可以做仿真器JavaScript調試,看看那裏的調用失敗?

謝謝,德萬·奈爾

回答

4

您可以啓用在移動Safari瀏覽器的JavaScript控制檯。請參閱說明here。它基本上是Settings-> Safari-> Developer-> Debug Console。這適用於仿真器和實際設備。

+0

鏈接斷開:( – Pathros 2015-09-29 18:18:40

5

我遇到了同樣的問題。

查詢的網址:在你發送給jQuery.ajax函數的對象參數。將它從「http://the/full/url」縮短爲「/ just/the/relative/to/root/part」

對我來說,它好像是一個Safari Mobile bug。

+0

謝謝你的提示 - 我們實際上是從不同的服務器/域不是站點拉動XML流託管的JavaScript我假定這是一個XSS安全措施,在iPhone不允許來自第三方服務器的XMLHttpRequest? – Devan 2009-12-29 00:03:20

+0

這也適用於我 – Rob3C 2010-08-03 23:38:52

+0

這個答案解決了我的問題,多年後在iPhone 7上運行Safari。 – iep 2017-12-22 09:33:33

0

好的,我想我們已經解決了這個問題,儘管它仍然讓我感到困惑。

如果我們做我們的代碼onReady()部分後直接一個「虛擬」的XMLHttpRequest,那麼它似乎「疏通」任何以下請求。

http = new XMLHttpRequest(); 

http.open("GET", "/getdata/dummy.xml); 
http.onreadystatechange=function() { 
    if(http.readyState == 4) { 
     // alert(http.responseText); 
    } 
} 
http.send(null); 

如果我註釋掉這個代碼塊,那麼遵循完全有效的XML請求會失敗。再次,這只是在設備上,因爲Safari和模擬器將在沒有這個代碼塊的情況下工作。

PS:dummy.xml只是返回「一無所有」

0

對我來說是腳本標籤移動到頭部標記答案。

0

我有同樣的問題寫一個網站的AJAX聊天。問題是緩存。添加這行代碼並解決問題。

$.ajaxSetup({ cache: false }); 
相關問題