假设我在一个页面上有三个元素:
- 接受数字联系人 ID 的文本框。
- 一个按钮,当单击该按钮时,将向服务器发出 Ajax 请求,以获取输入到文本框中的联系人 ID 的联系人信息。
- A
div
显示从服务器获取的联系信息。
现在假设另外两件事:
- 预计来自服务器的往返将需要 5 秒。
- 如果在 5 秒延迟期间,用户在文本框中输入不同的数字并单击按钮,则网页应忽略第一个 ajax 结果并接受第二个结果(即最近的 Ajax 请求)。
我的问题:
假设我在一个页面上有三个元素:
div
显示从服务器获取的联系信息。现在假设另外两件事:
我的问题:
您只需在成功回调中处理这一切。您在回调中检查的第一件事是是否输入了新信息,如果是,则让新信息获胜。否则通过请求的结果。
如有必要,应该很容易设置标志。每当发送新请求时就悬挂旗帜。在成功回调中使用它。
ResponsibleObject = {
lastAjaxId: 0,
onChangeSomething: function() {
var ajaxObject = $.ajax({
// some settings
success:this.ajaxCallback
});
ajaxObject.__id = ++this.lastAjaxId;
},
ajaxCallback: function(data, textStatus, jqXHR) {
if (jqXHR.__id != ResponsibleObject.lastAjaxId) {
return false;
}
// put your code here
}
};