2017-09-05 62 views
1

我有一个MPA(多页面应用程序)。针对Android和iOS发布。当用户想要导航到其他页面(视​​图)时,它只是改变页面。所有的事情都很好。我想实现一些后端同步功能。问题是,我在后台默默地发出Ajax请求,用户可以随时更改页面,所以应用程序可能失去Ajax调用的引用,这对于跟踪同步数据非常重要。http请求处理多个html页面app cordova

是否有任何插件,可以对本机代码级别或其他一些变通的HTTP请求。

回答

0

看一看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); 
    }); 
+0

事情是如果页面更改如何保持返回数据的粘性。 即第1页发出一个http请求,在得到答案之前,用户移动到第2页,而不是第2页如何获得响应? –

+0

您可以将回复保存在回调函数中。本地存储,然后在其他页面上访问它。 – David

+0

你弄错了。我不能等待电话回答。 应用程序在第1页上发送请求,然后用户移动到第2页。用户不知道正在进行Ajax调用。我可以在第2页上收到答案吗? –

0

没有OOB方式做到这一点。您可以使用像Cordova HTTP插件这样的东西将HTTP请求移动到本地端,它将继续在多个页面上执行,但是如果用户导航到另一个页面,则响应返回后不知道如何处理响应页。

如果你的处理真的是所有的背景,并不真正需要的任何JavaScript后处理,你可以尝试寻找到类似的cordova-plugin-background-download - 基本上在后台执行GET请求,并将结果保存在那里你告诉它。它只支持GET,但即使将整个应用程序放入后台,它也可以工作。

如果您需要后处理或非GET请求,您可以考虑在插件中使用本机代码实现逻辑(可能使用Cordova的HTTP插件之一来帮助实际进行网络编组)。

这将会是真棒,如果科尔多瓦能够支持像服务工作者,我一直在寻找到这里和那里。 iOS有一个旧的实现,但它似乎不再工作(并且如果没有大量更改,可能无法实现):cordova-plugin-serviceworker。其他

一个办法是让您的应用伪SPA与一些iframe秒。请求iframe处理您的请求并处理,并根据需要在内容iframe之间创建交互。但这也不是微不足道的。