我有一个表单,用户可以通过选中复选框来选择一系列值。有两个复选框列表,一个是使用整数作为值,另一个是使用字符串。
问题是我需要根据用户在复选框中选择的值向用户提供一些计算结果。这个计算可能很慢,从 2 到 20 秒不等。
目前,计算值的 ajax 请求在用户选中任何复选框时执行。但这会导致对他们单击的每个复选框的请求。并且每个请求返回的计算结果有时会以错误的顺序到达,这意味着最慢/最后到达的响应是呈现给用户的响应。
我似乎不必验证对用户选择的值的响应,仅在与所选复选框匹配时才显示结果。我认为哈希值将是解决此问题的最佳方法。但是我在用 C# 和 javascript 中的实现找到合适的哈希函数时遇到了一些麻烦。
我知道在返回结果时我可以只返回用户操作,但我仍然需要比较所有值,并且值的数量可能非常大。
最佳我想在服务器上生成所选值的哈希,然后在返回结果时在客户端上生成当前所选值的哈希,然后比较两者将指示结果是否与所选值匹配。
像这样的东西:
$.ajax({
type: 'POST',
url: '/Backend/GetCalculatedResult',
data: { CheckedIntegers: checkedIntegers, CheckedStrings: checkedStrings },
success: function(data) {
if(ResultMatchesSelection(data.SelectionHash)) {
DisplayResult(data.Result);
}
},
dataType: "json",
});
function ResultMatchesSelection(hash)
{
var selectionHash = .. generate hash from selected items;
return hash == selectionHash;
}
通过在最后一个用户操作后 1 秒执行 ajax 请求,我已经对这个问题进行了部分修复。因此,如果用户依次选中 5 个复选框,每个复选框之间的间隔不到一秒,则请求只会执行一次,而不是 5 次。
我真的很想将两者结合起来。
您知道如何在服务器端和客户端进行这种哈希处理吗?或者,如果您对如何以其他方式解决此问题有想法,请说出您的想法:)