在asp.net中使用ajax调用服务器端方法

时间:2013-05-20 14:20:20

标签: c# jquery asp.net

我正在尝试使用jquery对话框表单将数据插入数据库。

这是我的jquery:

    $(function () {
    $("#dialogregister").dialog({
    autoOpen: false,
    width: 800,
    height: 450,
    modal: true,
    show: 'blind',
    buttons: {
        'Register': function (event) {
            var fname = $("#txt_firstName").val();
            var midname = $("#txt_middleName").val();
            var lname = $("#txt_lastName").val();
            var gender = $('input:radio[name=gender]:checked').val();
            var address = $("#txt_Address").val();
            var ph = $("#txt_Phone").val();
            var email = $("#txt_Email").val();

            $.ajax({
                type: 'POST',
                url: '../Main.aspx/AddNewItem',
                data: '{"fname":"' + fname + '", "midname":"' + midname + '", "lname":"' + lname + '", "gender":"' + gender + '", "address":"' + address + '", "phone":"' + ph + '", "email":"' + email + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    if (msg.d) {
                        alert("Successfully added new item");
                    }
                },
                error: function () {
                    alert("Error! Try again...");
                }
            });
            $(this).dialog('close');
        },

        'Cancel': function () {
            $(this).dialog('close');
        }
    },
});

$("#signup").click(function (event) {
    event.preventDefault();
    $("#dialogregister").dialog("open");

});
});

当我点击“注册”按钮但我收到错误消息时应该调用它。

     public static void AddNewItem(string fname, string midname, string lname, string gender, string address, string phone, string email)
         {
            Person person = new Person() { Fname=fname, Mname=midname, Lname=lname, Gender=gender, Address=address, Phone=phone, Email=email };

    //add your logic to insert item into database
         Utility ut = new Utility();
         SqlConnection con = ut.openConnection();
         string sqlStatement = "insert into tbl_Users values('" + fname + "','" + midname + "','" + lname + "','" + 
                                                            gender + "','" + address + "','" + phone + "','" + email + "');";
         SqlCommand cmd = new SqlCommand(sqlStatement, con);
         cmd.ExecuteNonQuery();
    }
    }

    public class Person
    {
        public string Fname{ get; set; }
        public string Mname { get; set; }
        public string Lname { get; set; } 
        public string Gender { get; set; }
        public string Address { get; set; }
        public string Phone{ get; set; }
        public string Email { get; set; }
    }

我做错了吗?如何将值从对话框传递到服务器端方法?

2 个答案:

答案 0 :(得分:0)

您可以将数据作为JSON

传递给服务器
var fname = $("#txt_firstName").val();
var midname = $("#txt_middleName").val();
var lname = $("#txt_lastName").val();
var gender = $('input:radio[name=gender]:checked').val();
var address = $("#txt_Address").val();
var ph = $("#txt_Phone").val();
var email = $("#txt_Email").val();

var postData = {
     Fname:fname,
      Mname : midname,
     Lname :lname ,
      Gender :gender ,
     Address :address ,
     Phone:ph ,
     Email :email 

};

$.ajax({
  type: 'POST',
  url: '../Main.aspx/AddNewItem',
  contentType:'application/json',
  data: JSON.stringify(postData),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (msg) {
       if (msg.d) {
                alert("Successfully added new item");
             }
   },

答案 1 :(得分:0)

这可能是很多事情,但有两件事情会跳出来:

  1. 使用[WebMethod]属性标记AddNewItem()方法(使用System.Web.Services)。

  2. 也许你的网址很糟糕?试试“Main.aspx / ...”。当然,这取决于您的目录结构,但我假设您的Web方法代码与提供javascript的页面背后的代码位于同一文件中。