2011-09-16 52 views
7

Ajax調用服務器頁面如何在移動應用程序中使用(使用PhoneGap)。但是,當我在PC瀏覽器中從普通HTML頁面運行相同的Ajax調用時,它不起作用。我想這個問題是跨域。但是,它在移動應用程序中的效果如何。Ajax呼叫在移動應用程序(PhoneGap)中如何工作,但不在PC瀏覽器中?

使用JSONP它在PC瀏覽器和移動應用程序(使用PhoneGap)中工作正常。但在沒有datatype="jsonp"的移動應用程序也工作正常。

回答

12

PhoneGap FAQ

問:我想創建的PhoneGap通過AJAX訪問外部部署的Web服務的應用程序。我該如何解決XmlHttpRequest的跨域安全策略 的問題?

A.跨域安全策略不影響PhoneGap應用程序。由於html文件是由webkit使用file://協議調用的,因此安全策略不適用。 (在Android中,您可以通過編輯AndroidManifest.xml將android.permission.INTERNET授予您的應用程序)

+0

謝謝你的答覆。但是,在PC瀏覽器中,我們也使用file://協議(只需在瀏覽器中打開HTML頁面)。它不工作。如果跨域安全策略不影響file://協議。那麼請給我提供一些關於這方面的信息(可能只是發佈鏈接)。 –

+2

瀏覽器中的跨域策略仍針對本地文件執行。您將*無法*從瀏覽器發出跨域請求。 –

+2

此外,不同的瀏覽器沒有相同的本地文件的跨域策略請參閱http://stackoverflow.com/questions/3988494/cross-domain-ajax-fails-even-for-a-local-file –

7

移動應用程序(PhoneGap,Adobe AIR,Titanium,Native等)不具有相同來源的限制XHR請求桌面瀏覽器。他們可以進行任何他們想要的跨域調用。這就是爲什麼它可以在手機上正常工作,而不是在桌面上。

JSONP在兩者中均正常工作,因爲它不使用XHR。它通過使用<腳本>標記進行跨域請求。所以它繞過了瀏覽器的同源策略。 JSONP只能在遠程服務以函數形式返回數據時立即執行。

1

我猜所有基於WebView的視圖都沒有關於跨域XHR請求的限制規則。 跨域請求的另一種方式是服務器端網橋。

0

你可以使用iqouta在phonegap中調用ajax來搜索iqouta它很容易使用!

+0

使用iqouta範圍!例如 – htmlove

相關問題