2017-08-24 138 views
1

我有幾個谷歌表,我正在尋找一個表中的值。POST請求:返回狀態報告

用戶輸入擡頭值,然後搜索是在服務器上處理,在MVC的操作:

客戶端側

function findKPI() { 
    var lookedUpValue = $('#lookedUpValue').val(); 
    var sheetIDArray = getSheetIDArray(); 
    var payload = { sheetIDArray: sheetIDArray, lookedUpValue: lookedUpValue } 
    $.post('GetValueSheet', payload) 
     .done(function (data) { alert("OK") }) 
     .fail(function (data) { alert("Error: " + data.responseText) }) 
} 

和服務器端:

<HttpPost> 
Function GetValueSheet(sheetIDArray As List(Of String), lookedUpValue As String) As ActionResult 
    Dim API As New GoogleAPI(Web.HttpContext.Current.Request.PhysicalApplicationPath + "APIKey.json") 
    Dim ValuesList As List(Of String) 
    For Each sheetID In sheetIDArray 
     ValuesList = API.getValuesList(sheetID) 
     If ValuesList.Contains(lookedUpValue) Then Return Json(sheetID) 
    Next 
    Return Json(Nothing) 
End Function 

需要處理大量工作表,可能需要一段時間才能處理。

我想知道是否以及如何向客戶端發送中間結果,以顯示10,50等等。%的表已經被處理。

謝謝您的幫助

+0

您可以在HTTP comminucation中添加'GetNumberOfSheets'方法。然後您可以處理該進程欄客戶端。 – rst

回答

2

POST請求是一個離散的交易,所以你不能直接這樣做。我可能會這樣做的方式是公開一個API點,該API點採用唯一鍵來標識事務,當查詢API點時,它將發回響應以顯示查詢的狀態。

以非API的方式進行此操作,您可以嘗試使用websockets進行操作,該操作允許客戶端和服務器之間進行雙向通信。