2013-01-31 84 views
27

このトピックではたくさんの回答がありますが、私の問題の解決策を見つけることができませんでした。 私はこのようになりますASP.NET MVCのWeb APIがあります。GET経由でMVC Web APIにJSON配列を渡す

をそして私はこのようにそれを呼び出して試してみた:

$.ajax({ 
     dataType: "json", 
     data: JSON.stringify({idList: listOfIds}),    
     type: "GET", 
     url: "api/v1/util/CountryList", 
     success: function (result) { 
      alert(result); 
     } 
    }); 

URLは、次のようになります。

https://localhost/supertext/api/v1/util/CountryList?{%22idList%22:[46,14,62,83,120]} 

オルタナティブ:

$.ajax({ 
     dataType: "json", 
     data: { 
      idList: JSON.stringify(listOfIds), 
     }   
     type: "GET", 
     url: "api/v1/util/CountryList", 
     success: function (result) { 
      alert(result); 
     } 
    }); 

URL:

https://localhost/supertext/api/v1/util/CountryList?idList=%5B46%2C14%2C62%2C83%2C120%5D 

どちらの方法も動作しません。

実際に文字列として送受信したり、POSTを使用する必要がありますか?

答えて

54

いいえ、GETリクエストでJSONを送信しようとしないでください。 POSTやPUTなどの本体を持つ他の動詞とともにJSONを使用します。

[FromUri]属性を使用して、アクションのパラメータを飾ることで、それを標準的な方法を実行します。

public IList<Country> GetCountryList([FromUri] List<long> idList) 
{ 
    ... 
} 

してからちょうどAJAX要求をトリガ:

$.ajax({ 
    url: 'api/v1/util/CountryList', 
    type: 'GET', 
    data: { idList: [1, 2, 3] }, 
    traditional: true, 
    success: function (result) { 
     console.log(JSON.stringify(result)); 
    } 
}); 

は、さらにどのようにについてあなたのための読書推奨Web APIでのモデルバインディングの動作:

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1

+0

ありがとう! {idList:[1、2、3]}のデータをハードコードする場合には、これは機能しますが、データを使用する場合はJSON.stringify({idList:listOfIds})、 – Remy

+7

です。 'JSON.stringify'は何もしないでください! JSONを私の答えでGETリクエストと一緒に使ってはいけないと言いました。あなたのリクエストは 'data:{idList:listOfIds}'のようになります。明らかに、 'listOfIds'は数のjavascript配列であると仮定します。 –

+1

申し訳ありませんが、すべてを理解するのに少し時間がかかりました。今働いて!どうもありがとう。 – Remy

関連する問題