Javascript 多html页面应用程序cordova中的http请求处理

Javascript 多html页面应用程序cordova中的http请求处理,javascript,html,ajax,cordova,httprequest,Javascript,Html,Ajax,Cordova,Httprequest,我有一份MPA(多页申请)。为Android和iOS发布。当用户想要导航到其他页面(视图)时,它只需更改页面。一切正常。我想实现一些后端同步功能。问题是,我在后台无声地发出Ajax请求,用户可以随时更改页面,所以应用程序可能会丢失对Ajax调用的引用,这对于跟踪同步数据非常重要 是否有任何插件可以在本机代码级别发出http请求或其他解决方法。请看,它是一个本机插件,在后台线程上执行所有http请求 安装: cordova plugin add cordova-plugin-http POST请

我有一份MPA(多页申请)。为Android和iOS发布。当用户想要导航到其他页面(视图)时,它只需更改页面。一切正常。我想实现一些后端同步功能。问题是,我在后台无声地发出Ajax请求,用户可以随时更改页面,所以应用程序可能会丢失对Ajax调用的引用,这对于跟踪同步数据非常重要

是否有任何插件可以在本机代码级别发出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);
  });
看看,它是一个本机插件,在后台线程上执行所有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后处理,那么您可以尝试研究类似的东西-它基本上在后台执行GET请求,并将结果保存在您告诉它的地方。它只支持GET,但即使将整个应用程序放在后台,它也可以工作

如果您需要后处理或非获取请求,您可以考虑在插件中使用本机代码实现逻辑(可能使用科多瓦的HTTP插件之一来帮助实际的网络编组)。 如果科尔多瓦能支持像服务人员这样的工作,那就太棒了,我一直在到处调查。有一个旧的iOS实现,但它似乎不再工作了(如果没有广泛的更改,可能真的不可行):


另一个选择是让你的应用程序成为一个带有
iframe
s的伪SPA。使用
iframe
处理您的请求,并根据需要在内容
iframe
之间创建交互。但这也不是小事。

没有OOB方法可以做到这一点。您可以使用Cordova HTTP插件之类的工具将HTTP请求移动到本机端,本机端将继续在多个页面上执行,但如果用户导航到另一个页面,当响应返回时,它将不知道如何处理响应

如果您的处理实际上都是后台处理,并且不需要任何JavaScript后处理,那么您可以尝试研究类似的东西-它基本上在后台执行GET请求,并将结果保存在您告诉它的地方。它只支持GET,但即使将整个应用程序放在后台,它也可以工作

如果您需要后处理或非获取请求,您可以考虑在插件中使用本机代码实现逻辑(可能使用科多瓦的HTTP插件之一来帮助实际的网络编组)。 如果科尔多瓦能支持像服务人员这样的工作,那就太棒了,我一直在到处调查。有一个旧的iOS实现,但它似乎不再工作了(如果没有广泛的更改,可能真的不可行):


另一个选择是让你的应用程序成为一个带有
iframe
s的伪SPA。使用
iframe
处理您的请求,并根据需要在内容
iframe
之间创建交互。但这也不是小事。

问题是如果页面更改了如何保持返回数据的跟踪。i、 例如,第1页发出http请求,在获得答案之前,用户移动到第2页,那么我如何才能在第2页获得响应?您可以将响应保存在回调函数中,例如本地存储中,然后在另一页访问它。您弄错了。我等不及接听电话了。应用程序在第1页发送请求,然后用户移动到第2页。用户不知道正在进行Ajax调用。我能在第2页上得到答案吗?这个建议将允许请求在后台继续,但不允许跨多个页面进行基于JavaScript的处理。问题是如果页面改变了如何保持返回数据的跟踪。i、 例如,第1页发出http请求,在获得答案之前,用户移动到第2页,那么我如何才能在第2页获得响应?您可以将响应保存在回调函数中,例如本地存储中,然后在另一页访问它。您弄错了。我等不及接听电话了。应用程序在第1页发送请求,然后用户移动到第2页。用户不知道正在进行Ajax调用。我可以在第2页上得到答案吗?这个建议允许在后台继续请求,但不允许跨多个页面进行基于JavaScript的处理。