WEBAPIメソッドに対して単純なjqueryajax呼び出しを行おうとしています。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: 'POST',
url: 'http://redrock.com:6606/api/values/get',
dataType: "jsonp",
crossDomain: true,
success: function (msg) {
alert("success");
},
error: function (request, status, error) {
alert(error);
}
});
});
</script>
WEB APIアクション:
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
ajax呼び出しはWEBAPIにヒットしません。ブラウザコンソールで以下のエラーが発生します。
GET http://redrock.com:6606/api/values/get?callback=jQuery18207315279033500701_1383300951840&_=138330095185 400(不正なリクエスト)
ルート設定のコードは含まれていませんが、それが正しいと仮定すると、POSTリクエスト。これは、WebApiがアクション名からHTTP動詞を理解しようとするために発生します。
アクションの名前を変更するか、アクションメソッドに[HttpPost]
属性を追加することをお勧めします。 WebApiRouteDebugger パッケージを試すこともできます。
クロスドメイン呼び出しを行っている場合を除き、jsonpを使用する必要はありません(jsonpにはWeb APIのカスタムフォーマッターも必要です)。
$.getJSON('http://redrock.com:6606/api/values', function(data){
console.log(data);
});
編集:
Jsonpメディアタイプフォーマッターをインストールするには、次のプロジェクトをご覧ください: https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp