我正在尝试使用AJAX / Jquery和c#写入数据库。每当我将参数传递给C#代码时,它就会显示为null。我正在使用Visual Studio创建控制器类时生成的默认模板。任何帮助,将不胜感激!
注意:这是我要致电的一项休息服务。(一个普通的ASP网站…不是MVC。此外,GET Rest API可以完美地工作。)
jQuery / AJAX:
var dataJSON = { "name": "test" } $('#testPostMethod').bind("click", GeneralPost); function GeneralPost() { $.ajax({ type: 'POST', url: '../api/NewRecipe', data:JSON.stringify(dataJSON), contentType: 'application/json; charset=utf-8', dataType: 'json' }); }
C#
//If I remove the [FromBody] Tag then when I click the button this method is never called. public void Post([FromBody]string name) { }
编辑:
我已经稍微调整了代码,但仍然遇到相同的问题。概括地说,它正在加载POST方法,但它传递的是null。
public class RecipeInformation { public string name { get; set; } } public void Post(RecipeInformation information) { }
AJAX:
var dataJSON = { information: { name: "test" } }; $('#testPostMethod').bind("click", GeneralPost); console.log(dataJSON); function GeneralPost() { $.ajax({ type: 'POST', url: '../api/NewRecipe', data: dataJSON, contentType: 'application/json; charset=utf-8', }); }
对于简单类型,在服务器端:
public void Post([FromBody]string name) { }
在客户端,您只需定义是否要以json格式发送:
var dataJSON = "test"; $('#testPostMethod').bind("click", GeneralPost); function GeneralPost() { $.ajax({ type: 'POST', url: '/api/NewRecipe', data: JSON.stringify(dataJSON), contentType: 'application/json; charset=utf-8', dataType: 'json' }); }
如果要使其以复杂类型工作,则应从服务器端定义:
public class RecipeInformation { public string name { get; set; } } public class ValuesController : ApiController { public void Post(RecipeInformation information) { } }
从客户端:
var dataJSON = { name: "test" }; $('#testPostMethod').bind("click", GeneralPost); function GeneralPost() { $.ajax({ type: 'POST', url: '/api/NewRecipe', data: JSON.stringify(dataJSON), contentType: 'application/json; charset=utf-8', dataType: 'json' }); }