2017-08-24 94 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进行操作,该操作允许客户端和服务器之间进行双向通信。