1

我有一个内置在 PhoneGap 中的 WebApp。我阅读了这篇文章,因此我尝试将我的应用程序移植到 Windows Phone 8 并按照此处的入门指南进行操作。

我正在使用 Marionette.js 和 Cordova 2.3.0rc2。我在这里有一个ajax调用。

 $.ajax({
    url : urlTemp + templateId + ".html",  //This refers to a file in my local file system
    data : {},
    success : function(data) {
      App.templates[templateId] = data;
      callback.call(this, data);
    },
    error : function(err) {
      alert('ERROR LOG: Error loading Template for: ' + urlTemp + templateId + ".html");
    },
    dataType : 'text'
  });

不知何故,这总是出错。这在 Android 和 IOS 中运行良好。

4

3 回答 3

2

尝试x-wmapp0://www/在本地文件的路径之前添加。就我而言,它有所帮助。

于 2013-02-25T13:44:44.823 回答
1

如果它只是一个本地文件,您也许可以使用 FileReader API 而不是 AJAX 请求来读取文件数据。

http://docs.phonegap.com/en/2.2.0/cordova_file_file.md.html#FileReader

编辑:刚刚注意到您说您使用的是 2.3.0。删除我在 2.2 中尚不支持的评论。

于 2012-12-31T20:49:51.917 回答
0

正如 WP8 中其他帖子中所建议的那样,在调用 ajax 时,本地文件的路径必须是绝对的。所以你需要在你的路径中有“www/”。而不是调用“test.html”,您必须调用“www/test.html”才能使 ajax 调用起作用。

我想出了以下解决方案:

1)首先您需要安装“设备插件”,以便仅在 WP 上执行此代码

2)然后我们只需在每个本地路径之前添加“www /”,每次进行ajax调用时

这仅在您所有被调用的本地文件都位于根“www”文件夹中时才有效

如果您使用 jquery mobile 并将一些 html 文件存储在子文件夹中,此代码将使这些文件无法访问,因此您必须对其进行调整

初始化phonegap(和jquery mobile)后必须执行以下代码:

if (typeof device !== "undefined") {    
    PLATFORM = device.platform.toLowerCase();
    if (PLATFORM == 'win32nt' || PLATFORM == 'wince') {         
        $(document).ajaxSend(function (event, jqxhr, settings) {
            if (settings.url.indexOf("http") !== 0) {
                var parts = settings.url.split("/");
                settings.url = "www/" + parts[parts.length - 1];
            }           
        });         
    }
}
于 2014-05-13T06:50:34.140 回答