如何使用asp.net中的jquery和json将数据保存到数据库中

时间:2013-12-21 14:29:35

标签: jquery asp.net ajax json

我正在开发一个使用jquery& amp;存储数据到数据库的应用程序。 JSON。

我的剧本功能:

<script type="text/javascript">
    function test() {
        $(document).ready(function () {
            var Email = document.getElementById('<%= txtEmail.ClientID %>').value;
            var Message = document.getElementById('<%= txtMessage.ClientID %>').value;
            var Name = document.getElementById('<%= txtMessage.ClientID %>').value;
            var ID=32;
            $.ajax({
                type: "POST",
                url: "Detail.aspx/InsertMethod",
                data: "{'Name':'" + Name + "'Email:'" + Email + "'Message:'" + Message + "'ID:'"+ID+"'}",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    var returnedstring = data.d;

                }
            });

        });
    }
</script>

我的设计是: -

<table>
                                    <tr>
                                        <td>
                                            <label>Name</label>
                                        </td>
                                        <td>input type="text" id="txtName" runat="server" class="form-control">
                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="txtName"
                                            Display="Dynamic" SetFocusOnError="true" ErrorMessage="Enter Name." ValidationGroup="Comment">
                                        </asp:RequiredFieldValidator>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <label>Email</label>
                                        </td>
                                        <td>asp:TextBox ID="txtEmail" runat="server" CssClass="form-control"></asp:TextBox>
                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtEmail"
                                            Display="Dynamic" SetFocusOnError="true" ErrorMessage="Enter Email." ValidationGroup="Comment">
                                        </asp:RequiredFieldValidator>
                                            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtEmail"
                                                SetFocusOnError="true" ValidationExpression="^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$"
                                                ErrorMessage="Invalid Email-Id"></asp:RegularExpressionValidator>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <label>Message</label>
                                        </td>
                                        <td>
                                            <textarea class="form-control" rows="8" id="Textarea1" runat="server"></textarea>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtMessage"
                                                Display="Dynamic" SetFocusOnError="true" ErrorMessage="Enter Message." ValidationGroup="Comment">
                                            </asp:RequiredFieldValidator>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td></td>
                                        <td>
                                            <button class="btn-ps" type="submit" id="btnSave" validationgroup="Comment" onclick="test()">Send Message</button>
                                        </td>
                                    </tr>
                                </table>

我的网络方法是: -

  [System.Web.Script.Services.ScriptMethod()]
  [System.Web.Services.WebMethod(enableSession: true)]
    public static string InsertMethod(string Name, string Email,string Message,sting ID)
    {
        int retval = 0;
        try
        {
            Entity_NewsComments objComment = new Entity_NewsComments();

            objComment.ID= ID;    
            objComment.Comment = Message;
            objComment.Email = Email;
            objComment.Name = Name;

            if ((!string.IsNullOrEmpty(objComment.Email)) && (!string.IsNullOrEmpty(objComment.Name)) && (!string.IsNullOrEmpty(objComment.Comment)))
            {
                objComment.QFlag = "I";
                objComment.Date = Convert.ToDateTime(DateTime.Now.ToString());
                objComment.Status = 0;
                //retval = new Process_NewsComments().insert(objComment);
                if (retval > 0)
                {                        

                }

            }

            return "true";
        }
        catch (Exception ex)
        {
            throw (ex);
        }
    }

但它没有用。我已经在网络方法上放了一个调试器,但它不会去那里。它也没有显示任何错误。请帮助我

2 个答案:

答案 0 :(得分:1)

document.ready不是通过这种方式使用..无论如何你可以直接调用该函数。我在你的问题中观察到了很多事情

  1. 您的Test()方法中不需要Document.ready
  2. 您要检索的控件ID和参数不同步。
  3. 纠正上面的事情并尝试一次。

    你的javascript方法应该如下

    <script type="text/javascript">
        function test() {
                var Email = $('Your Email field client ID').val();
                var Message = $('Your message field client ID %>').val();
                var Name = $('Your Name field client ID').val();
                var ID=32;
                $.ajax({
                    type: "POST",
                    url: "Detail.aspx/InsertMethod", //URL should be fully qualified
                    data: "{'Name':'" + Name + "'Email:'" + Email + "'Message:'" + Message + "'ID:'"+ID+"'}",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        var returnedstring = data.d;
    
                    },
                   error: function(a)
                   { alert(a.responseText);}
                });
        }
    </script>
    

答案 1 :(得分:0)

这是 insert data into the database 的另一种好方法,而不是发送字符串参数。我发送Javascript对象并在服务器端接收作为类对象。

服务器侧

public class newComment
{
   public string ID;
   public string Comment;
   public string Email;
   public string Name;
}

现在添加ASMX文件并创建webmethod,如下所示:

[WebMethod]
public string InsertMethod(newComment newComment)
{
  // logic here
}

<强>客户端:

 function test() {
   var newComment = {};

        newComment.Comment = "comment txt";
        newComment.Email = "Email id";
        newComment.Name = "your name";
        newComment.ID = "32";

        var jsonData = JSON.stringify({
            newComment: newComment
        });

        $.ajax({
            type: "POST",
            url: "ajax_update.asmx/InsertMethod",
            data: jsonData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            error: OnErrorCall
        });

        function OnSuccess(response){
         var result=response.d;
         console.log("success")
        }

        function OnErrorCall(response){
            console.lof(response);
        }

}