2010-09-14 56 views
2

我有迷你模塊(認爲是iGoogle),它們通過調用LoadUserControl方法的頁面加載,並將該控件加載到PlaceHolders中。我需要將該實現切換爲通過jQuery AJAX請求加載控件。目前的問題在於,當我執行AJAX Get時,我可以通過將模塊附加到內容來加載模塊,但是沒有任何功能可以在正常加載的控件上工作。例如,當我在DDL上選擇不同的選項時,頁面刷新並且沒有任何變化。我懷疑是因爲這是因爲當我通過AJAX執行加載時,方法沒有被綁定。另外,當我使用這種方法我的Flash內容未被加載。通過jQuery加載ASP.Net用戶控件AJAX

我在這裏做錯了什麼,還是有更好的解決方案?

$.ajax({ 
    url: '/modules/UserModules.aspx?CID=12345', 
    type: "GET", 
    dataType: "html", 
    success: function(data) { 
     $('#column1').append($(data).find('div#lm li')); 
     $('#column2').append($(data).find('div#cm li')); 
     $('#column3').append($(data).find('div#rm li')); 
     alert('Load was performed.'); 
    } 

}); 

回答

2

當您回發到服務器時,服務器不知道您的用戶控件,因爲它已動態添加到頁面中。實際上,您渲染UC HTML,然後將部分呈現的HTML添加到您的頁面。

我建議在使用DDL進行選擇時,避免將回發到服務器並使用jQuery檢索任何使用Page Methodweb method的數據。

0

我不確定我看到使用UC的實用工具。有很多方法可以做這種事情。像傑米說的,你可以有一個簡單的使用web方法的.aspx頁面。一個asmx頁面。你也可以不使用網絡方法,只要直接寫你的字符串結果並處理它們(不應該是你的第一選擇!),而是像使用php或傳統的ASP一樣做。

但是最重要的是你可以從中調試。在你的UC代碼中加入一個斷點來跟蹤服務器端。使用Firebug:打開它,選擇控制檯並觀察您的GET請求是否確實正在做他們需要的。現在,您很少需要警報來進行調試。