C# 使用ASP.NET WebAPI返回Ajax GET请求使用的布尔值
我已经构建了一个WebAPI(使用版本2),它返回C# 使用ASP.NET WebAPI返回Ajax GET请求使用的布尔值,c#,jquery,asp.net,ajax,asp.net-web-api,C#,Jquery,Asp.net,Ajax,Asp.net Web Api,我已经构建了一个WebAPI(使用版本2),它返回HttpResponseMessage。我向这些WebAPI方法发出AJAX请求,WebAPI返回JSON响应。这一切都很好,但现在我需要的是一种方法,向一个只返回布尔值的WebAPI方法发出AJAXGET请求。下面是我用来获取JSON的GET请求的一个示例: $.ajax({ url: 'http://server/site/api/BulletinBoard/GetUserMessageHistory?userId=' + userI
HttpResponseMessage
。我向这些WebAPI方法发出AJAX
请求,WebAPI返回JSON
响应。这一切都很好,但现在我需要的是一种方法,向一个只返回布尔值的WebAPI方法发出AJAX
GET请求。下面是我用来获取JSON的GET
请求的一个示例:
$.ajax({
url: 'http://server/site/api/BulletinBoard/GetUserMessageHistory?userId=' + userId + '&messageId=' + messageId,
type: 'GET',
dataType: 'json',
crossDomain: true,
success: function (data) {
DoSomething();
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
我希望实现的是(这是伪代码):
其中hasMessageBeenDisplayed
将是我的WebAPI方法返回的true
或false
。下面是我的WebAPI方法的一个示例:
[HttpGet]
public HttpResponseMessage GetUserMessageHistory(string userId, int messageId)
{
var userMessageHistory = (from i in db.UserMessageHistories
where i.UserId == userId &&
i.MessageId == messageId
select new
{
UserId = i.UserId,
MessageId = i.MessageId,
LastSeen = i.LastSeen,
}).ToList();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, userMessageHistory);
return response;
}
为了能够发出一个期望
true
或false
的AJAX
请求,我还会从我的WebAPI方法返回HttpResponseMessage
?我如何才能发出一个AJAX
GET请求,它调用的方法可以返回true
或false
?为什么不简单地更改为:
[HttpGet]
public bool GetUserMessageHistory(string userId, int messageId)
{
var userMessageHistory = (from i in db.UserMessageHistories
where i.UserId == userId &&
i.MessageId == messageId
select new
{
UserId = i.UserId,
MessageId = i.MessageId,
LastSeen = i.LastSeen,
}).ToList();
return userMessageHistory.any();
}
怎么样
userMessageHistory
?这样行吗?我想到了这一点,但没有尝试,因为我向我的WebAPI方法发出了HTTP GET请求,调用方希望得到的是HttpResponse,而不是.NET布尔返回值。AJAX请求中定义的数据类型只能是json、xml和其他一些数据类型,但肯定不是布尔值。我的意思是,如果这是真的,那么我将如何构造AJAX调用?显然,这不再是JSON响应了,对吧?@FelipeOriani这只是想弄明白,不要担心内容。@Mike Marks我想你误解了WebAPI的工作原理。WebAPI非常聪明,因为在控制器中有一个返回HTTP响应的方法。因此,即使在返回int、string和bool等基本类型时,它也会以XML或JSON的形式发送,具体取决于您配置它的目的。就是这么简单。$.ajax()
返回XMLHttpRequest
,如果webapi返回200状态码,它将执行调用的成功
事件。由于您在ajax调用中设置了json
,因此将请求发送到内容类型为application/json
的webapi,您将获得此格式的输出。
[HttpGet]
public bool GetUserMessageHistory(string userId, int messageId)
{
var userMessageHistory = (from i in db.UserMessageHistories
where i.UserId == userId &&
i.MessageId == messageId
select new
{
UserId = i.UserId,
MessageId = i.MessageId,
LastSeen = i.LastSeen,
}).ToList();
return userMessageHistory.any();
}