繁体   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