我正在使用运行Winforms的非常老的asp.net应用程序来进行POC,并为其添加了REST API。到目前为止,直到该端点为止,我一直是成功的,并且它并没有将我的数据返还给我的控制器。
我在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);
}
}
Java脚本
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);
和我的控制器代码:
[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控制器或控制器方法中:
[EnableCors(origins: "http://example.com", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}
全面启用
上述方法还可以用于在不注释每个控制器的情况下通过API启用CORS:
public static void Register(HttpConfiguration config)
{
var corsAttr = new EnableCorsAttribute("http://example.com", "*", "*");
config.EnableCors(corsAttr);
}
有关更多信息,请参见官方Web API文档。
jQuery AJAX成功数据仅解析最后一个JSON节点的奇怪问题 - javascript所以我有以下jQuery代码:function updateOrderSummary(orderID) { var returnString = orderID; $.ajax({ url: "library/getOrderSummary.php", type: "POST", data: ({returnStrin…
jQuery ajax发布电子邮件字段 - javascript我不确定为什么我无法发布电子邮件字段的内容,这是我的代码。<html> <head> <title></title> <script src="//code.jquery.com/jquery-1.11.2.min.js"></script> </head>…
javascript popupwindow之后的行如何工作? - javascript好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…
jQuery val函数在隐藏字段上不起作用? - javascript这是我的HTML代码:<div style='display:none;' id='allformid'> <div> <form action='#'> <input type='text' name='name' …
Javascript-Urls的奇怪字符串比较行为 - javascript最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com/…