2011-01-27 48 views
3

我正在嘗試在使用javascript的網頁中爲控件調用WebMethod(GetData())。如何在javascript中調用WebMethod控件

<script type="text/javascript"> 
    $(document).ready(function() { 
     //this selector needs fixed 
     $('<%= Control1.ClientID %>').GetData(); 
    }); 
</script> 

<tel:RadScriptManager ID="RadScriptManager1" runat="server" /> 
<tel:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1"> 
    <uc1:Control ID="Control1" runat="server" /> 
</tel:RadAjaxPanel> 

的UC:控制代碼:

[WebMethod()] 
    [ScriptMethod()] 
    protected void GetData() 
    { 
     //stuff happens here 
    } 

我無法弄清楚什麼樣的選擇來使用。我在頁面上有多個控件,我想在不同的時間給他們打電話。我用什麼樣的選擇器或者什麼命令來運行這個WebMethod?

+0

有幾分相似[SO發佈](http://stackoverflow.com/問題/ 886903 /主叫-ASP淨服務器側方法-通jquery的)。 – 2011-01-27 19:15:07

回答

2

我的理解是,無法在子/用戶控件上調用webmethod/pagemethod。

如果你移動此Web方法父ASPX,你需要做這樣的事情:

jQuery.ajax({ 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: '{}', 
    dataType: 'json', 
    url: 'MyPage.aspx/SomePageMethod', 
    success: function(result){ 
    alert(result); 
    } 
}); 
0

這將選擇與該控件ID結尾的ID傳遞給它的元素,從而ignorning是ASP.NET預規劃到您的控制ID的

$("[id$='_ControlIDHere']") 

編輯任何多餘的文字:我可能誤解了問題,但如果你實際上只是尋找一個選擇器來獲得對你的控件的引用,那麼我的方法將工作

0

你在這裏混合使用JavaScript和ASP.NET。即使您在.aspx文件中看到了udp1:Control>標籤,但這並不是實際輸出到瀏覽器的內容。該控件必須輸出一些有效的HTML代碼,這是JavaScript實際看到的。

您應該查看生成的HTML代碼(即右鍵單擊 - >查看源代碼)並查找控件映射到哪個HTML元素,並根據您的發現構造一個新的選擇器。

相關問題