我编写了一个简单的jQuery.ajax函数,它通过单击按钮从服务器加载用户控件。我第一次点击按钮,它会进入服务器并获得用户控制权。但是每次后续点击同一个按钮都不会进入服务器以获取用户控件。
由于我的用户控件从db中获取数据,因此每次按下按钮时都需要重新加载用户控件。但无论如何,我让我的用户控件从页面卸载,并重新单击该按钮,它将进入服务器并提取用户控件。这是代码:
$("#btnLoad").click(function() {
if ($(this).attr("value") == "Load Control") {
$.ajax({
url: "AJAXHandler.ashx",
data: { "lt": "loadcontrol" },
dataType: "html",
success: function(data) {
content.html(data);
}
});
$(this).attr("value", "Unload Control");
}
else {
$.ajax({
url: "AJAXHandler.ashx",
data: { "lt": "unloadcontrol" },
dataType: "html",
success: function(data) {
content.html(data);
}
});
$(this).attr("value", "Load Control");
}
});
如果我有其他任何方式可以通过其他方式让我知道每次点击按钮都可以从服务器加载我的用户控件。
答案 0 :(得分:2)
将cache
属性值false
添加到传递给jQuery.ajax的对象。
$.ajax({
url: "AJAXHandler.ashx",
cache: false,
data: { "lt": "loadcontrol" },
dataType: "html",
success: function(data) {
content.html(data);
}
});
您可以通过以下方式全局设置:
jQuery.ajaxSetup({
cache: false
});
默认情况下,jQuery将使用除SCRIPT / JSONP之外的任何内容的缓存响应。
答案 1 :(得分:1)
如果您的btnLoad
位于您正在重新加载的用户控件中,则需要执行此操作:
$("#btnLoad").live('click', function() {
加载ajax时,您将替换元素,并且任何事件处理程序都直接绑定到它们。如果你使用.live()
代替它,它将不会作为回调的一部分被销毁...它的工作方式不同而且事件处理程序在DOM中更高,所以它不会被按钮本身所知。