2010-04-03 41 views
1

我已经编写了一个简单的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"); 
    } 
}); 

请让我知道,如果有任何其他的方法可以让我从服务器获取每次加载我按一下按钮我的用户控制。

回答

2

将值false添加到您传递给jQuery.ajax的对象的cache属性。

$.ajax({ 
    url: "AJAXHandler.ashx", 
    cache: false, 
    data: { "lt": "loadcontrol" }, 
    dataType: "html", 
    success: function(data) { 
    content.html(data); 
    } 
}); 

您可以通过全局设置这样的:

jQuery.ajaxSetup({ 
    cache: false 
}); 

jQuery将用于缓存响应除外SCRIPT/JSONP任何默认。

+0

谢谢马特。问题解决了。 – Ashish 2010-04-03 13:58:06

1

如果您btnLoad是你重新加载用户控件中,你需要做的这个代替:

$("#btnLoad").live('click', function() { 

当加载AJAX,你要替换的元素,和任何事件处理程序直接绑定到这些。如果使用.live()代替它,它不会作为回调的一部分被销毁......它的工作方式不同,并且事件处理程序在DOM中的位置更高,因此它不会被按钮本身感知到。

+0

btnLoad不属于我的用户控件。当我点击btnLoad时,它会加载用户控件。尽管没有运气,但我试图使用现场。 – Ashish 2010-04-03 13:50:48

相关问题