javascript - 在 phonegap 和 Windows Phone 7 中使用 $.ajax 获取静态 html 文件

标签 javascript windows-phone-7 cordova requirejs

我们使用 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/viewsx-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/

相关文章:

javascript - JQuery DataTables 无法识别加载的数据

silverlight - 用于 silverlight 的 Modbus Tcp

c# - WP7 日期未国际化?

javascript - 如何在阅读 TTS 消息后添加页面刷新功能

javascript - Node.JS/Express/Mongodb/Mongoose 简单连接问题

windows-phone-7 - 适用于 Windows Mobile 6.5 和 Windows Phone 7 的 Phonegap

ios - 使用 PhoneGap 和 iOS 时您首选的工作流程是什么?

android - cordova build android 删除旧版本

javascript - Cordova 与 Phonegap 的插件、支持、文档、更新

除非使用 turbolinks 和 rails 4 重新加载页面,否则不会执行 javascript