从 ajax 调用向 Web api 方法发布值为什么变为空?
Posting value to web api method from ajax call why going null?
当我调试显示空值时,我将一些值发布到 Web API 方法。
下面是 ajax 调用的代码片段,这里我传递 dept_name
但它在 web API 方法中显示为空。
var _customer = {};
_customer.DepartmntName = txtName.val();
_customer.DateCreated = null;
_customer.DateModified = null;
_customer.IsDeleted = null;
_customer.ParentID = null;
_customer.Icon = null;
_customer.Paren = null;
alert( _customer.DepartmntName);
alert(_customer);
$.ajax({
type: "POST",
url: "/api/AddDepSpc/InsertCustomer2",
data: JSON.stringify(_customer),
contentType: "application/json",
dataType: "json",
success: function (r) {
alert("success" + r);
var row = $("#tblCustomers tr:last-child").clone(true);
//AppendRow(row, r.CustomerId, r.Name, r.Country);
AppendRow(row,r.dept_name.r.date_created,r.date_modified,r.IsDeleted,
r.ParentID.r.Icon,r.Paren);
txtName.val("");
}
});
下面是网络 api 方法的代码片段。
public class AddDepSpcController : ApiController
{
[Route("api/AddDepSpc/InsertCustomer2")]
[HttpPost]
public master_department InsertCustomer2(master_department _customer)
{
using (HRMEntities entities = new HRMEntities())
{
entities.master_department.Add(_customer);
entities.SaveChanges();
entities.SaveChanges();
}
return _customer;
}
}
现在在调试模式下它显示 null 假设我已经将 HR 作为部门名称传递并且所有其余参数都是 null now.Expecting Web api 方法中的 HR 参数值。
您回发的对象包含 属性 个与您的模型不匹配的名称。
您的模型包含一个名为 dept_name
的 属性,但 javascript 对象包含一个名为 DepartmntName
的对象。同样,其他名称中的 none 匹配(Icon
除外)。假设您要将 txtName
的值绑定到模型 dept_name
属性,那么在脚本中,使用
var _customer = {};
_customer.dept_name = txtName.val(); // not DepartmntName
....
另请注意,没有理由将 null
值添加到 _customer
对象(它们在控制器中默认为 null
)。您还可以删除 contentType: "application/json",
选项,只在 ajax 调用中使用 data: _customer,
而不是对其进行字符串化。
当我调试显示空值时,我将一些值发布到 Web API 方法。
下面是 ajax 调用的代码片段,这里我传递 dept_name
但它在 web API 方法中显示为空。
var _customer = {};
_customer.DepartmntName = txtName.val();
_customer.DateCreated = null;
_customer.DateModified = null;
_customer.IsDeleted = null;
_customer.ParentID = null;
_customer.Icon = null;
_customer.Paren = null;
alert( _customer.DepartmntName);
alert(_customer);
$.ajax({
type: "POST",
url: "/api/AddDepSpc/InsertCustomer2",
data: JSON.stringify(_customer),
contentType: "application/json",
dataType: "json",
success: function (r) {
alert("success" + r);
var row = $("#tblCustomers tr:last-child").clone(true);
//AppendRow(row, r.CustomerId, r.Name, r.Country);
AppendRow(row,r.dept_name.r.date_created,r.date_modified,r.IsDeleted,
r.ParentID.r.Icon,r.Paren);
txtName.val("");
}
});
下面是网络 api 方法的代码片段。
public class AddDepSpcController : ApiController
{
[Route("api/AddDepSpc/InsertCustomer2")]
[HttpPost]
public master_department InsertCustomer2(master_department _customer)
{
using (HRMEntities entities = new HRMEntities())
{
entities.master_department.Add(_customer);
entities.SaveChanges();
entities.SaveChanges();
}
return _customer;
}
}
现在在调试模式下它显示 null 假设我已经将 HR 作为部门名称传递并且所有其余参数都是 null now.Expecting Web api 方法中的 HR 参数值。
您回发的对象包含 属性 个与您的模型不匹配的名称。
您的模型包含一个名为 dept_name
的 属性,但 javascript 对象包含一个名为 DepartmntName
的对象。同样,其他名称中的 none 匹配(Icon
除外)。假设您要将 txtName
的值绑定到模型 dept_name
属性,那么在脚本中,使用
var _customer = {};
_customer.dept_name = txtName.val(); // not DepartmntName
....
另请注意,没有理由将 null
值添加到 _customer
对象(它们在控制器中默认为 null
)。您还可以删除 contentType: "application/json",
选项,只在 ajax 调用中使用 data: _customer,
而不是对其进行字符串化。