2014-01-10 5 views
5

Я создал WebAPI (используя версию 2), который возвращает HttpResponseMessage. Я делаю AJAX запросы на эти методы WebAPI, а WebAPI возвращает ответ JSON. Это все прекрасно и dandy, но теперь мне нужен способ сделать запрос GET на метод WebAPI, который просто возвращает логическое значение. Вот пример GET запроса я использую, чтобы получить JSON:Использование ASP.NET WebAPI для возврата Boolean для использования в запросе AJAX 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); 
    } 
}); 

То, что я надеюсь достичь что-то вроде (это псевдо-код):

var hasMessageBeenDisplayed = 
     $.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 будет либо true или false, возвращенный моим методом WebAPI. Вот пример моего метода 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; 
} 

Чтобы быть в состоянии сделать AJAX запрос, который ожидает true или false, я бы еще вернуться HttpResponseMessage из моего метода WebAPI? Как я могу сделать запрос AJAX GET, метод которого он может вернуть true или false?

+0

каталог '$ .ajax()' 'вернуть XMLHttpRequest', если код состояния возврата WebAPI 200, он будет выполнять' success' событие вашей вызов. Поскольку вы устанавливаете 'json' в вызове ajax, вы отправляете запрос на webapi с типом содержимого' application/json', и вы получите вывод в этом формате. –

ответ

3

Почему не просто изменить, как:

[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(); 
} 
+0

как насчет 'userMessageHistory'? –

+0

Будет ли это работать? Я подумал об этом, но не пробовал, потому что я делаю HTTP-запрос GET для своего метода WebAPI, и вызывающий абонент ожидает HttpResponse, а не возвращаемого значения .NET Boolean. Тип данных, определенный в запросе AJAX, может быть только json, xml и пара других, но, конечно, не логическим. –

+0

Я имею в виду, если это так, то как мне построить мой вызов AJAX? Очевидно, это скорее не ответ JSON, не так ли? –