2014-01-10 8 views
5

HttpResponseMessageを返すWebAPI(バージョン2を使用)を構築しました。私はこれらのWebAPIメソッドへのAJAX要求を行い、WebAPIはJSON応答を返します。これはすべて上質で素敵ですが、今は必要なのは、ブール値を返すWebAPIメソッドにAJAX GETリクエストを行う方法です。ここで私はJSONを取得するために使用していGET要求の例です:ASP.NET WebAPIを使用してAjax GETリクエストで使用されるBooleanを返す

$.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はどちらかだろう
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); 
       } 
     }); 

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; 
} 

trueまたはfalseを期待AJAX要求を作成できるようにするために、私はまだ私のWebAPIのメソッドからHttpResponseMessageを返すでしょうか?どのようにしてAJAX GET要求を呼び出して、trueまたはfalseを返すことができますか?

+0

を '$アヤックス()' 'XMLHttpRequest'を返し、WEBAPIが200ステータスコードを返す場合、それはあなたの' SUCCESS'イベントを実行しますコール。あなたはajax呼び出しで 'json'を設定しているので、content-type' application/json'でwebapiにリクエストを送ります。この形式で出力されます。 –

答えて

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

これは機能しますか?私はこれを考えましたが、WebAPIメソッドにHTTP GETリクエストを行い、呼び出し元が.NETブール型の戻り値ではなくHttpResponseを要求するため、試してみませんでした。 AJAXリクエストで定義されているdataTypeは、json、xml、その他の2つしかありませんが、確かにブール値ではありません。 –

+0

これが真実ならば、AJAX呼び出しをどのように構築すればよいでしょうか?明らかにJSONレスポンスではないでしょうか? –

関連する問題