webmethod无法使用ajax

时间:2013-12-24 07:30:21

标签: c# asp.net ajax jquery webmethod

我的.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>

我的代码没有调用,只需单击

即可刷新页面

4 个答案:

答案 0 :(得分:3)

页面方法必须是静态的:

[WebMethod]
public static void ImageButton1_Click()
{

}

但是你不能在Page Method中注册客户端脚本方法,因为它是静态的。

除了图像控件是服务器端控件,因此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>

答案 1 :(得分:1)

使用以下代码制作WebMethod Static并修复错误:

$("#<%=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'); }
    });
}

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

第一个使你的Web方法静态,如果你的方法仍未解雇,那么请确保$ .ajax调用中的url是正确的

url:“/ auth_reg.aspx / ImageButton1_Click”,`

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