【问题标题】:webmethod not working using ajaxwebmethod 不能使用 ajax
【发布时间】:2013-12-24 07:30:20
【问题描述】:

我的 .cs 代码是

auth_reg.aspx.cs (breakpoint shows the method is never reached)
[WebMethod]
public void ImageButton1_Click()
{
    string strScript = "<script language='JavaScript'>alert('working')</script>";
    Page.RegisterStartupScript("PopUp", strScript);
}

.html代码

<asp:ImageButton ID="imgbtnsave" runat="server" Text="Submit" ImageUrl="images/btn-submit1.jpg" src="images/btn-submit1.jpg" onmouseout="this.src='images/btn-submit1.jpg';" onmouseover="this.src='images/btn-submit.jpg';" />

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
    $('#imgbtnsave').click(function () {
        $.ajax({
            type: "POST",
            url: "auth_reg.aspx/ImageButton1_Click",
            data: '{}',
            contentType: "application/json",
            dataType: "json",
            success: function (msg) {
                alert('workingajax');
            },
            error: function () {
                alert('error');
            }
        });          
    });
</script>

我的代码没有调用,页面只是在点击时刷新

【问题讨论】:

  • 你找到答案了吗?
  • 作为 ashx 页面我们可以做到这一点

标签: c# asp.net ajax jquery webmethod


【解决方案1】:

页面方法必须是静态的:

[WebMethod]
public static void ImageButton1_Click()
{

}

但是您不能在页面方法中注册客户端脚本方法,因为它是静态的。

除了图像控件是服务器端控件,因此 jQuery 选择器必须是:

<script type="text/javascript">
    $("#<%=imgbtnsave.ClientID%>").click(function () {
        $.ajax({
            type: "POST",
            url: "auth_reg.aspx/ImageButton1_Click",
            data: '{}',
            contentType: "application/json",
            dataType: "json",
            success: function (msg) {
                alert('workingajax');
            },
            error: function () {
                alert('error');
            }
        });          
    });
</script>

【讨论】:

    【解决方案2】:

    使您的 WebMethod 静态并使用以下代码修复您的错误:

    $("#<%=imgbtnsave.ClientID%>").click(function () {
        var para1;
        var para2;
        $.ajax({
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        url: 'EXAMPLE.aspx/SaveData',
        data: "{'para1':'" + para1+ "', 'para2':'" + para2+ "'}",
        async: false,
        success: function (response) {
        },
        error: function () {
            console.log('there is some error'); }
        });
    }
    

    【讨论】:

      【解决方案3】:

      我没有使用经典 asp.net 的经验,但我认为您应该将点击处理程序放在 ready() 语句中,因为问题可能是 JavaScript 在 DOM 准备好之前执行:

      $(document).ready(function() {
        $('#imgbtnsave').click(function () {
          ...
        });
      });
      

      除此之外,请检查您的控制台(例如 Chrome 开发工具的 FireBug)以查看是否存在 JavaScript 错误。

      【讨论】:

      • 您可以将错误函数更改为:function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }
      • 我已经放了那个代码,现在它显示请求失败:错误
      • 嗯..我没有更多的选择。也许您的 data 参数是错误的,因为它是空的,您可以将其删除并重试。还要验证是否正在拨打电话(在 FireBug 的网络面板中)以及请求是否没有返回 404 状态代码。
      • i 控制台错误,例如“预期为 'none' 或 URL 但发现 'Alpha('。解析 'filter' 的值时出错。声明已删除。”即将到来
      【解决方案4】:

      首先使您的 Web 方法静态化,如果您的方法仍未触发,请确保 $.ajax 调用中的 url 正确

      网址:“/auth_reg.aspx/ImageButton1_Click”,`

      在前面加上“/”或者在firebug上调试url是否正确

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        相关资源
        最近更新 更多