我有一个内置PhoneGap的WebApp。 我看过this文章 所以我尝试将我的应用程序移植到Windows Phone 8并遵循入门指南here。
我正在使用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中运行良好。
答案 0 :(得分:2)
尝试在路径前添加x-wmapp0://www/
到本地文件。就我而言,它有所帮助。
答案 1 :(得分:1)
如果它只是一个本地文件,您可以使用FileReader API而不是AJAX请求来读取文件数据。
http://docs.phonegap.com/en/2.2.0/cordova_file_file.md.html#FileReader
编辑:刚刚注意到你说你使用的是2.3.0。删除我对2.2中的评论不支持。
答案 2 :(得分: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];
}
});
}
}