【问题标题】:insert data into sql database using jquery ajax in asp.net c#在asp.net c#中使用jquery ajax将数据插入sql数据库
【发布时间】:2016-09-07 11:23:48
【问题描述】:

我正在使用三层架构并尝试使用 jquery ajax 将数据存储到数据库中,但在成功函数中没有得到响应

这是我的代码

portalDAL.cs

public DataTable InsertFeedBack(String Name, String Email, string Category, string Message)
  {
  SqlParameter[] parms = new SqlParameter[]{


  new SqlParameter("@Name",Name),
  new SqlParameter("@Email",Email),
  new SqlParameter("@Category",Category),
  new SqlParameter("@Message",Message)

  };
  return Helper.ExecuteParamerizedSelectCommand("insert into feedback(name,email,category,message) values(@Name,@Email,@Category,@Message)", CommandType.Text, parms);
  }

portalBAL.cs

 public DataTable InsertFeedBack(String Name, String Email, string Category, string Message)
  {
  return portalDAL.InsertFeedBack(Name, Email, Category, Message);

  }

portal.asmx.cs

 [WebMethod]
  public String InsertFeedBack(String Name, String Email, string Category, string Message)
  {
  DataTable dt = detailsBAL.InsertFeedBack(Name, Email, Category, Message);
  return JsonConvert.SerializeObject(dt);
  }

我的 Jquery 函数。

$(document).ready(function () {
  $('#submit').click(function () {

  var name = $('#name').val();
  var email = $('#email').val();
  var category = $('#cate').val();
  var msg = $('#msg').val();

  insertFeedback(name,email,category,msg);
  });



function insertFeedback(name,email,cat,msg)
  {
  $.ajax({
  type: "POST",
  url: "portal.asmx/InsertFeedBack",
  data: "{'Name':'" + name + "','Email':'" + email + "','Category':'" + cat + "','Message':'" + msg + "'}",

  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (data) {
  alert("hi");
  var obj = data.d;
  if (obj == 'true') {
  $('#name').val('');
  $('#email').val('');
  $('#cate').val('');
  $('#msg').val('');
  $('#lblmsg1').html("Details Submitted Successfully");
  window.location.reload();
  }
  },
  error: function (result) {
  alert("Error");
  }
  });

  } 
  });

我收到错误警报消息控件没有进入成功功能它没有在浏览器上显示任何错误

【问题讨论】:

  • 您是否在 firebug 控制台中检查过服务器出现了什么错误?如果是,您可以发布错误消息或错误文本的屏幕截图吗?
  • 它在控制台上没有显示任何错误..收到错误消息警报后将能够在控制台上看到此错误“未捕获的异常无法转换为字符串”
  • 有一些服务器端错误。在您的 Web 方法上放置一个调试点并检查它在哪里出现此错误。
  • 你的意思是你不能调用你的服务器端方法吗?所以如果你的 web 方法中有一个断点,然后通过 ajax 调用它,断点不会命中?

标签: c# jquery asp.net ajax


【解决方案1】:

试试这段代码

$('#submit').click(function () {
  insertFeedback();
});

function insertFeedback()
{
var model = new Object();
  model.name = $('#name').val();
  model.email = $('#email').val();
  model.category = $('#cate').val();
  model.msg = $('#msg').val();

$.ajax({
type: "POST",
url: "portal.asmx/InsertFeedBack",
data: model,
dataType: "json",
success: function (data) {
     alert("hi");
    // your code
    },
error: function (result) {
    alert("Error");
 }
} 

创建一个具有四个属性的类

public class YourClass
{
 public string name { get; set; }
 public string email { get; set; }
 public string category { get; set; }
 public string message { get; set; }
}

将您的方法参数更改为类对象。您可以使用一个对象从 ajax 调用中接收参数数量。

[WebMethod]
public String InsertFeedBack(YourClass model)
{
 DataTable dt = detailsBAL.InsertFeedBack(model.name, model.email, model.category, model.message);
 return JsonConvert.SerializeObject(dt);
} 

【讨论】:

    【解决方案2】:

    尝试使用这种 ajax 代码格式。

    $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8", 
        data: "{'Name':'" + name + "','Email':'" + email + "','Category':'" + cat + "','Message':'" + msg + "'}",
        url: "portal.asmx/InsertFeedBack",
        success: function (data) {
            console.log(data);
        },
        error: function (error) {
            console.log(error);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-01-20
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      相关资源
      最近更新 更多