假设我有以下HTML页面。
<A panel to display list of items>
Item A
Item B
Item C
...
<A panel to display details about item>
Details on item X:
我想编写页面,以便每当用户点击其中一个项目时,所选项目的详细信息将显示在底部面板上。
但是,我想要解决的问题很少:
答案 0 :(得分:2)
您可以注册点击处理程序,它会触发加载数据的ajax请求。
有多种方法可以解决您没有触发多个请求的问题:
显示'详细信息正在加载'很简单 - 您可以在触发请求之前将Panel dom或innerhtml的值设置为该消息,并在请求时设置实际返回值回报。
请注意,许多js库(如jQuery)提供了围绕发出可能简化操作的ajax请求的API。例如,jQuery.ajax方法接受一个对象文字,它可以包含函数'beforeSend','complete','success',这样你就可以在成功之前,之后和之后做一些事情(在其他函数中,检查{ {3}})
你可以使用裸机js做你想要的,但是库可以让你的生活更轻松。
答案 1 :(得分:0)
关于重复请求,我将最后一个XMLHttpRequest对象保留在lastRequest
变量中。每当我发送新请求时,我都会检查这个变量。如果存在,请致电lastRequest.abort()
。我还会检查您的成功回调,请求对象与您的lastRequest
相同,否则请忽略它。在jQuery中,这看起来像:
var lastRequest;
// Your click handler
$(".items").click(function () {
if (lastRequest) lastRequest.abort();
lastRequest = $.ajax({..., success: function (data, status, request) {
if (request != lastRequest) return; // Ignore, it was aborted
// Code to show the detail about the selected item
}});
// Code to show the in-progress message
});