2013-12-21 74 views
0

我正在使用jQuery将数据存储到数据库中的应用程序& json。如何在asp.net中使用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> 

我的Web方法是: -

[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); 
     } 
    } 

但它不是working.I有把一个调试器放在web方法上,但它不会去那里。它没有显示任何错误请帮助我

+0

'Request.QueryString [“news”]'将始终为'null',因为'POST'请求​​不会手动添加查询字符串。 –

+0

我编辑了我的代码。 –

回答

1

document.ready没有用这种方式..无论如何,你可以直接调用该函数。有许多东西,我在你的问题观察

  1. 的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> 
+0

我做到了,但它回到了错误功能 –

+0

看我编辑了错误功能。把“警报”,然后你会得到确切的错误。让我知道你正在面临哪个错误.. – user968441

+0

它现在工作很好。实际上,$ .ajax({})内的数据格式是错误的。我已经纠正它,现在它运作良好。感谢您的帮助。 –

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); 
     } 

} 
相关问题