【问题标题】:How to Call a WebMethod for a control in javascript如何在 javascript 中为控件调用 WebMethod
【发布时间】:2011-01-27 19:06:54
【问题描述】:

我正在尝试使用 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?

【问题讨论】:

标签: javascript asp.net asmx webmethod


【解决方案1】:

据我了解,无法在子/用户控件上调用 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);
  }
});

【讨论】:

    【解决方案2】:

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

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

    编辑:我可能误解了这个问题,但如果您实际上只是在寻找一个选择器来获取对您的控件的引用,那么我的方法将起作用

    【讨论】:

      【解决方案3】:

      您在这里混合了 JavaScript 和 ASP.NET。即使您在 .aspx 文件中看到 标记,这并不是实际输出到浏览器的内容。控件必须输出一些 JavaScript 实际看到的有效 HTML 代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 2013-10-07
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多