如何在javascript中为控件调用WebMethod

时间:2011-01-27 19:06:54

标签: javascript asp.net asmx webmethod

我正在尝试使用javascript为网页中的控件调用WebMethod(GetData())。

<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?

3 个答案:

答案 0 :(得分: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);
  }
});

答案 1 :(得分:0)

这将选择ID以您传递给它的ControlID结尾的元素,从而忽略asp.net预先添加到控件ID的任何额外文本

$("[id$='_ControlIDHere']")
编辑:我可能误解了这个问题,但如果你实际上只是在寻找一个选择器来获取对你的控件的引用,那么我的方法就可以了。

答案 2 :(得分:0)

您正在混合使用JavaScript和ASP.NET。即使你看到&lt; uc1:Control&gt; .aspx文件中的标记,这不是实际输出到浏览器的内容。控件必须输出一些有效的HTML代码,这是JavaScript实际看到的内容。

您应该查看生成的HTML代码(即右键单击 - &gt;查看源代码)并找到您的控件映射到哪个HTML元素,并根据您的发现构建一个新的选择器。