2010-04-03 43 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

相關問題