我有一个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);
}
});
答案 0 :(得分:1)
您应该使用:
data: {
thing1: thing1,
thing2: thing2,
thing3: thing3,
thing4: thing4
};
它们将在查询字符串中传递,因此请注意不要太长。
正如Nkosi所说,GET请求没有正文。如果查询字符串的时间过长,即使后端不会修改数据,也应使用POST。