我有一个关于将 iOS/Android 应用程序移植到 Win8 的问题。我目前正在使用带有 ajax 调用的http://srobbin.github.com/jquery-pageslide/ pageslide 的修改版本来在侧面加载 menu.html 页面。AJAX 调用如下所示...
$.ajax({
url: $str,
dataType: "text",
success: function(data) {
$("#menu").html(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
在Win8中,我收到此错误..
Exception was thrown at line 8490, column 29 in ms-appx://664ace5f-4774-4928-bc94-ad4650a1ede1/js/jquery-1.8.2.js
0x80070005 - JavaScript runtime error: Access is denied.
这是它在 jQuery 代码中中断的地方。
if (s.username) {
xhr.open(s.type, s.url, s.async, s.username, s.password);
} else {
xhr.open(s.type, s.url, s.async); //<-------------------
}
我做了一些研究,似乎 Windows 8 不允许本地 ajax 调用。如何将其转换为 WinJS.xhr 调用或可在 Win8 上运行的东西?
编辑 - 第一次回答后。
我要做的是转到$str(这是带有html 菜单的文件的url,即menu.html)并通过html 调用用它填充$('#menu')。我在 XHR 返回中放入什么以从 menu.html 中获取文本,然后在成功调用时我可以将其分配给文件。
我第一次搞乱 XHR/AJAX 所以请原谅任何无知。
编辑#2
我已重做 jquery 调用以使用 WinJS.xhr...,如下面的代码所示。
WinJS.xhr({
type: "GET",
url: $str,
responseType: "text",
}).then(function(success){
console.log(success);
},
function (error) {
console.log(error);
}
);
这仍然返回访问被拒绝异常。在这段基本的java代码上..
req.open(
options.type || "GET",
options.url,
// Promise based XHR does not support sync.
//
true,
options.user,
options.password
);
此处记录了该异常。
SCRIPT5: Exception is about to be caught by JavaScript library code at line 2332, column 21 in ms-appx://microsoft.winjs.1.0/js/base.js
0x80070005 - JavaScript runtime error: Access is denied.
如果文件名/路径 ($str) 更改为不正确的路径,则会出现 resource_not_found 错误,这是不言自明的。我不知道现在该尝试什么。有人有解决方案吗?