【问题标题】:How to save data into database using jquery and json in asp.net如何在asp.net中使用jquery和json将数据保存到数据库中
【发布时间】:2013-12-21 14:29:34
【问题描述】:

我正在开发一个使用 jquery 和 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);
        }
    }

但它不起作用。我在 web-method 上放了一个调试器,但它没有去那里。它也没有显示任何错误。请帮助我

【问题讨论】:

  • Request.QueryString["news"] 将始终为 null,因为您的 POST 请求不会手动附加查询字符串。
  • 我已经编辑了我的代码。

标签: jquery asp.net ajax json


【解决方案1】:

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

  1. 您的 Test() 方法不需要 Document.ready
  2. 您正在检索的控件 ID 和参数不同步。

改正以上内容,试一次。

您的 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>

【讨论】:

  • 看我编辑了错误函数。将“警报”放入其中,然后您将得到确切的错误。让我知道您面临的错误..
  • 现在运行良好。先生,实际上 $.ajax({}) 中的数据格式是错误的。我已经纠正了它,现在它运行良好。感谢帮助。
【解决方案2】:

这是另一种将数据插入数据库而不是发送字符串参数的好方法。我正在发送 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);
        }

}

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2012-04-05
    • 2013-11-01
    • 2021-04-10
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2015-08-15
    • 2011-10-01
    相关资源
    最近更新 更多