jQuery没有在asp.net中触发后端方法

时间:2014-12-08 07:02:40

标签: c# jquery asp.net

我正在使用Backend触发asp.net的jQuery方法。我已尽可能完美地设置了一切。但还是不知道出了什么问题。

请帮我解决这个问题。

我的代码:

<asp:Button ID="btnSubmit" runat="server" Text="Update" />

var jquery = $.noConflict();
jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
                if(jquery("#form1").valid()) {

                    jquery.ajax({
                        type: "POST",
                        url: "Page.aspx/UpdateData",
                        data: jquery("#form1").serialize(),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(msg) {
                            alert(msg);
                        },
                        error: function(msg) {
                            alert(msg);
                        } 
                    });
                }
            });
        });

后端方法:

[System.Web.Services.WebMethod]
public static string UpdateData(string get_param)
{
     // Code...
}

我还尝试使用BeakPoint进行检查,但它不会出现在代码中。甚至,我看不出任何错误。

5 个答案:

答案 0 :(得分:1)

我删除了内容类型。正如您使用formSerialize。它将形成类似key = value&amp; key1 = value1的数据,因此它不是json格式。

注意:确保您的表单中包含id form1。

jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
                if(jquery("#form1").valid()) {

                    jquery.ajax({
                        type: "POST",
                        url: "Page.aspx/UpdateData",
                        data: '{ "get_param" :"' +  $('form').serialize() + '"}',
                        contentType: "application/json; charset=utf-8",                           
                        dataType: "json",
                        success: function(msg) {
                            alert(msg);
                        },
                        error: function(msg) {
                            alert(msg);
                        } 
                    });
                }
            });
        });

答案 1 :(得分:0)

尝试从ajax请求中删除内容类型并获取数据

public static string UpdateData(string get_param)
    string get_params= HttpContext.Current.Request["get_param"];
}

答案 2 :(得分:0)

public class MyClass
{
    public string myName
    {
        get { return "Hello"; }
    }
}

在你的aspx.cs页面中:

[WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = true)]
public static object MyMethod()
{
    return new MyClass();
}

在你的ASPX页面中:

$.ajax({
            url: "somepage.aspx/MyMethod",
            data: {},
            cache: false,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            type: "GET",
            success: function (data) {
                if (data.hasOwnProperty("d"))
                    alert(data.d.myName);
                else
                    alert(data);
            },
            error: function (reponse) {
                alert(reponse);
            }
        });

答案 3 :(得分:0)

If you want to send json data, convert your data to json format.

var jquery = $.noConflict();
jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
            if(jquery("#form1").valid()) {

                jquery.ajax({
                    type: "POST",
                    url: "Page.aspx/UpdateData",
                    data:  JSON.stringify({ get_param:jquery("#form1").serialize() }),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        alert(msg);
                    },
                    error: function(msg) {
                        alert(msg);
                    } 
                });
            }
        });
    });

答案 4 :(得分:0)

问题是因为asp.net button。验证完成后是刷新的页面。因此,我在preventDefault点击按钮后使用了jquery,它解决了我的问题。

检查我的代码:

function pageLoad() { 
      jquery('#<%= btnSubmit.ClientID %>').click(function (e) {
            if(jquery("#form1").valid()) {
                  e.preventDefault(); // this line was imp

                  // Ajax call...
      });
}