我有一个MPA(多页面应用程序)。针对Android和iOS发布。当用户想要导航到其他页面(视图)时,它只是改变页面。所有的事情都很好。我想实现一些后端同步功能。问题是,我在后台默默地发出Ajax请求,用户可以随时更改页面,所以应用程序可能失去Ajax调用的引用,这对于跟踪同步数据非常重要。http请求处理多个html页面app cordova
是否有任何插件,可以对本机代码级别或其他一些变通的HTTP请求。
我有一个MPA(多页面应用程序)。针对Android和iOS发布。当用户想要导航到其他页面(视图)时,它只是改变页面。所有的事情都很好。我想实现一些后端同步功能。问题是,我在后台默默地发出Ajax请求,用户可以随时更改页面,所以应用程序可能失去Ajax调用的引用,这对于跟踪同步数据非常重要。http请求处理多个html页面app cordova
是否有任何插件,可以对本机代码级别或其他一些变通的HTTP请求。
看一看cordova-plugin-http,它是执行在后台线程上的所有HTTP请求本地插件。
安装:
cordova plugin add cordova-plugin-http
例POST请求:
cordovaHTTP.post("https://google.com/", {
id: 12,
message: "test"
}, { Authorization: "OAuth2: token" }, function(response) {
// prints 200
console.log(response.status);
try {
response.data = JSON.parse(response.data);
// prints test
console.log(response.data.message);
} catch(e) {
console.error("JSON parsing error");
}
}, function(response) {
// prints 403
console.log(response.status);
//prints Permission denied
console.log(response.error);
});
没有OOB方式做到这一点。您可以使用像Cordova HTTP插件这样的东西将HTTP请求移动到本地端,它将继续在多个页面上执行,但是如果用户导航到另一个页面,则响应返回后不知道如何处理响应页。
如果你的处理真的是所有的背景,并不真正需要的任何JavaScript后处理,你可以尝试寻找到类似的cordova-plugin-background-download - 基本上在后台执行GET请求,并将结果保存在那里你告诉它。它只支持GET,但即使将整个应用程序放入后台,它也可以工作。
如果您需要后处理或非GET请求,您可以考虑在插件中使用本机代码实现逻辑(可能使用Cordova的HTTP插件之一来帮助实际进行网络编组)。
这将会是真棒,如果科尔多瓦能够支持像服务工作者,我一直在寻找到这里和那里。 iOS有一个旧的实现,但它似乎不再工作(并且如果没有大量更改,可能无法实现):cordova-plugin-serviceworker。其他
一个办法是让您的应用伪SPA与一些iframe
秒。请求iframe
处理您的请求并处理,并根据需要在内容iframe
之间创建交互。但这也不是微不足道的。
事情是如果页面更改如何保持返回数据的粘性。 即第1页发出一个http请求,在得到答案之前,用户移动到第2页,而不是第2页如何获得响应? –
您可以将回复保存在回调函数中。本地存储,然后在其他页面上访问它。 – David
你弄错了。我不能等待电话回答。 应用程序在第1页上发送请求,然后用户移动到第2页。用户不知道正在进行Ajax调用。我可以在第2页上收到答案吗? –