我在PhoneGap上构建移动应用程序。我创建了几个静态HTML页面(本地存储在手机上)并尝试使用AJAX从服务器加载一些数据。
$( document ).bind( "mobileinit", function() {
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
$(document).ready(function () {
ajaxDeferred = $.ajax({
url: 'http://example.com/api/isAuthorized'
type: method,
data: parameters,
timeout: 40000
});
ajaxDeferred
.done(function(data) {
alert(data.result);
})
.fail(onFailHandler);
});
在服务器端,我有这段代码
public ActionResult IsAuthorized()
{
FormsAuthentication.SetAuthCookie("shade", true);
return this.Json(
new
{
result = this.HttpContext.User.Identity.IsAuthenticated
},
JsonRequestBehavior.AllowGet
);
}
我期待:
当我在浏览器中尝试它时,它按预期工作。 但无论我运行什么移动应用程序,我总是收到False,就像cookie没有被转移一样。
所以问题是如何使用AJAX正确登录用户,是否可能? 什么是最佳做法?由于未知原因,PhoneGap手册未涵盖此简单方案。
答案 0 :(得分:1)
好的,我找到了答案:
$(document).ready(function () {
...
});
不合适。相反,必须使用
document.addEventListener(
"deviceready",
function() {
... at this point cookies are working fine!
},
false);
不需要Access-Control-Allow-Origin和Access-Control-Allow-Credentials标头以及其他跨域技术