2017-09-05 64 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之間創建交互。但這也不是微不足道的。