我们使用 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/views
,app/www/views
,/www/views
,www/views
,/views
,views
,甚至x-wmapp0:/app/www/views
和x-wmapp1:/app/www/views
. - 显然,我提供了一个 super 简化的示例。如果您需要更多,请告诉我。
最佳答案
以下内容可能有助于您理解问题
1) 通过 File.cs (\templates\standalone\cordovalib\Commands\File.cs).readAsText 方法访问 Cordova WP7 上的本地文件。因此,您可以附加完整的 cordovalib 而不是已编译的 dll,并查看 Cordova 试图在何处找到该文件。
2) ajax 请求和本地文件之间的转换是在 XHRPatch (cordova-2.3.0.js) 上完成的,所以尝试在某处添加 uri 跟踪 here (console.log(uri);)
关于javascript - 在 phonegap 和 Windows Phone 7 中使用 $.ajax 获取静态 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490093/