gpt4 book ai didi

javascript - 如何从 HTTP 上下文对象获取 Post 数据

转载 作者:行者123 更新时间:2023-11-28 00:25:50 26 4
gpt4 key购买 nike

我正在使用运行 winforms 的非常旧的 asp.net 应用程序开发 POC,并向其中添加 REST API。到目前为止,我在这一端点之前都取得了成功,但它没有将我的数据返回到我的 Controller 中。

与我当前正在使用的实现相比,我在 MVC 框架和 Web API 方面拥有更多经验。我需要帮助的是如何将数据发送回服务器。

这是我的代码:这相当于我的全局 asax 文件

      class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });

appBuilder.UseCors(CorsOptions.AllowAll);
appBuilder.UseWebApi(config);
}
}

Javascript

    var setPatient = function () {

$.ajax({
url: "http://localhost:9000/api/context/readPtnt?contextData=&type=context",
type: "POST",
dataType: "json",
contentType:"application/json; charset=utf-8",
data: {
jsonData: JSON.stringify({
firstName: $('#fName').val(),
lastName: $('#lName').val(),
ID: $('#ID').val(),
DOB: $('#DOB').val(),
SSN: $('#SSN').val(),
MRN: $('#MRN').val()
})

}
})
.done(successPatientSet)
.fail(errorFn)
.always(function (data, textStatus, jqXHR) {
});
}
//click
$("#btnSetPatientData").on("click", setPatient);

和我的 Controller 代码:

         [HttpPost]
[Route("/api/context/readPtnt")]
public string ReadPtnt(string contextData, string type)
{

try
{
var patientInfo = PatientContext.Create(contextData);

我可以成功到达后端,但在 contextData 变量中什么也没有得到,当我尝试更改该变量名称时,我得到 404。我尝试了 JQuery 不同迭代的各种变体,以及纯 javascript Ajax 调用。我们使用的 REST 中间件是 OWIN。我很困惑,任何意见都会有帮助。谢谢。

最佳答案

您需要启用 CORS 支持要启用 CORS 支持,请将 Microsoft.AspNet.WebApi.Cors NuGet 包添加到您的项目中。

将此代码添加到您的配置中:

public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
}

要启用跨源请求,请将 [EnableCors] 属性添加到您的 Web API Controller 或 Controller 方法:

[EnableCors(origins: "http://example.com", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}

全局启用上述方法也可用于跨 API 启用 CORS,而无需注释每个 Controller :

public static void Register(HttpConfiguration config)
{
var corsAttr = new EnableCorsAttribute("http://example.com", "*", "*");
config.EnableCors(corsAttr);
}

有关更多信息,请参阅官方 Web API 文档。

关于javascript - 如何从 HTTP 上下文对象获取 Post 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500390/

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