簡體   English   中英

使用$ .ajax在phonegap和Windows Phone 7中獲取靜態html文件

[英]Using $.ajax to fetch static html files in phonegap and Windows Phone 7

我們使用Phonegap / Cordova 2.3.0將應用程序部署到Windows Phone 7.應用程序使用Require.js動態加載所有模塊。 一個模塊稱為“路由器”,負責從本地文件中獲取靜態html並將其內容加載到<div> 這適用於iPhone,iPad和Windows Phone 8.但WP7中發生了一些奇怪的事情。

來自router.js示例代碼:

//path that works with WP8
var path = "www/views/";
$.ajax({ url: path + "test3.html" })
                .done(function(html) {
                    alert(html); //result from Windows Phone 8
                }).fail(function(error) {
                    alert(error); //result from Windows Phone 7
                });

在WP7上測試時給出的錯誤是404 Not Found。

我說“發生了一些奇怪的事情”,因為我可以將上面的確切代碼復制到main.js (require.js入口點)或index.html ,它將運行而不會出錯。 但是當我將該代碼放入router.js ,它會返回錯誤。

一些觀察:

  • router.js是在同一文件夾( /www/js )作為main.js
  • index.html位於/www文件夾中。
  • 我已經嘗試過我能想到的每一個路徑組合,希望偶然發現一個有效的路徑。 /app/www/viewsapp/www/views/www/viewswww/views/viewsviews ,甚至x-wmapp0:/app/www/viewsx-wmapp1:/app/www/views
  • 顯然,我提供了一個超簡化的例子。 如果您需要更多,請告訴我。

以下內容可幫助您了解問題

1)通過File.cs(\\ templates \\ standalone \\ cordovalib \\ Commands \\ File.cs).readAsText方法訪問Cordova WP7上的本地文件。 因此,您可以附加完整的cordovalib而不是編譯的dll,並查看Cordova嘗試查找該文件的位置。

2)ajax請求和本地文件之間的轉換是在XHRPatch(cordova-2.3.0.js)完成的,所以嘗試在這里添加uri跟蹤(console.log(uri);)

使用我現在使用的Cordova 2.7.0(在Windows Phone 8上 - 在WP7上它可能有所不同!)看起來你只需要通過相對於應用程序根目錄的路徑(而不是你的www目錄!這意味着你必須從www/path/to/my/file.js

希望有所幫助 - 這對我來說很困惑!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM