gpt4 book ai didi

c# - Web Api、ajax 和内容类型

转载 作者:行者123 更新时间:2023-11-30 18:15:03 24 4
gpt4 key购买 nike

我想更好地了解 Net 中的 WebApi 以及如何使用 ajax 调用它的正确方法。关于我的开发环境的信息很少:我正在使用 .net 4.0 和 visual studio 2010 以及 Jquery。

型号:

public class TestForm
{
public string FirstName { get; set; }
}

网络接口(interface):

public class TestpController : ApiController
{
[HttpPost]
public HttpResponseMessage Post(TestForm form)
{
string jose = "jose";
return Request.CreateResponse(HttpStatusCode.OK, "yay");
}
}

客户端:

V1 (不起作用,返回错误 405):

$.ajax({
url: "http://xxx/api/Testp",
type: "POST",
data: JSON.stringify({ FirstName: "Jose" }),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(data) {
console.log("success");
},
error: function (xhr, errorType, exception) {
console.log("error");
}
});

V2 (有效):

$.ajax({
url: "http://xxx/api/Testp",
type: "POST",
data: { FirstName: "Jose" },
dataType: 'json',
success: function(data) {
console.log("success");
},
error: function (xhr, errorType, exception) {
console.log("error");
}
});

为什么添加 contentType: "application/json; charset=utf-8" 并将数据更改为 JSON.stringify({ FirstName: "Jose"}),但当我删除内容类型并在数据选项中发送对象时,它会起作用。

最佳答案

简短的回答在于这些警报的输出:

alert(JSON.stringify({FirstName :"Jose"}));
alert({FirstName :"Jose"});

第一个给你一个字符串,第二个给你一个对象。

你的方法:

public HttpResponseMessage Post(TestForm form)

接受对象而不是字符串。因此,当您发布一个字符串时,.NET Framework 无法找到可以处理该字符串的方法,因此返回 405。

关于c# - Web Api、ajax 和内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49175177/

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