gpt4 book ai didi

c# - AJAX 和 Web Api 发布方法 - 它是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 04:25:56 25 4
gpt4 key购买 nike

我正在尝试使用 AJAX/Jquery 和 C# 写入我的数据库。每当我将参数传递给 C# 代码时,它都显示为 null。我使用的是 visual studio 在创建 Controller 类时生成的默认模板。任何帮助将不胜感激!

注意:这是我要调用的休息服务。 (一个普通的 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。

C#

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

关于c# - AJAX 和 Web Api 发布方法 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com