【发布时间】:2018-12-10 16:57:02
【问题描述】:
我有一个 GET WebApi 端点,它是我的 MVC 应用程序的一部分,我想用它来处理我发送给它的一些数据,并通过 jQuery AJAX 调用完成这些数据的发送。
但是,我在通过 AJAX 调用传递所需参数时遇到了一些问题。目前我正在将我需要的所有参数编译到一个对象中,使用JSON.stringify() 将参数转换为字符串,并将其作为数据发送。
这里还有什么我遗漏的吗?如果我正在执行 POST,我可以很好地传递这些参数,但我想避免这种情况,因为我的端点不负责插入或更新任何数据。
下面是我用于 WebApi 端点和 AJAX 调用的代码。
WebApi 端点:
方法:
[HttpGet]
[Route("api/services/getservices")]
public IHttpActionResult GetServices(ServiceViewModel vm)
{
return Ok(Request);
}
类:
public class ServiceViewModel
{
public ServiceModel service { get; set; }
}
public class ServiceModel
{
public string thing1 { get; set; }
public string thing2 { get; set; }
public string thing3 { get; set; }
public string thing4 { get; set; }
}
AJAX:
var thing1 = $("#thing1").find(":selected").attr("program-id");
var thing2 = $("#thing2").val();
var thing3 = $("#thing3").val();
var thing4 = $("#thing4").val();
var obj = {
thing1: thing1,
thing2: thing2,
thing3: thing3,
thing4: thing4
};
obj = { "service": obj };
$.ajax({
contentType: "application/json",
url: "/api/services/getservices",
type: "GET",
data: JSON.stringify(obj),
cache: false,
success: function (data) {
console.log(data);
console.log("got here");
serviceTable(data);
},
error: function () {
servicEngineService.getProgramServices(programId, generateServiceTable, getProgramServicesFailure);
}
});
【问题讨论】:
-
GET 请求没有 BODY。另一种选择是在查询字符串中发送数据,但在绑定到复杂对象时有其局限性。
标签: ajax asp.net-web-api get