私は現在、WebAPI の Pluralsight トレーニングに取り組んでおり、いくつかの問題が発生しています (サンプルをダウンロードしても機能しないため、役に立ちませんでした。コースはベータ版から作成されたもので、.Net で最終バージョンを使用しています。 4.5)。次の HTML を使用して、非常に単純なビューを作成しました。
<form onsubmit="return submitCourse();">
<input type="text" name="name" id="name" />
<input type="submit" value="Create Course" />
</form>
<h1 id="msg"></h1>
<script>
//1: have form - get values from form - send to API as json
//2: use form values
function submitCourse() {
//$.ajax({
// url: '/api/courses',
// type: 'POST',
// dataType: 'json'
//});
$.ajax({
url: '/api/courses/',
type: 'POST',
dataType: 'json',
success: function (newCourse) {
var msg = 'New course id = ' + newCourse.id;
$('#msg').text(msg);
}
});
return false;
}
</script>
フォームが送信されると、スクリプトが最初に実行され、フォーム データが AJAX 呼び出しを介して送信されます。私が遭遇している問題は、コントローラーで Post メソッドがヒットしたときに、「newCourse」パラメーターが常に null になることです。
public Course Post(Course newCourse)
{
newCourse.id = _courses.Count;
_courses.Add(newCourse);
//TODO : return 201
return newCourse;
}
さまざまなツールを調べてみると、上記のスクリプトがデータをまったく送信していないように見えます (コンテンツの長さは 0) が、その理由を理解できないようです (WebAPI と jQuery の $.ajax() 呼び出しの新機能) )。$.ajax() 呼び出し内で「data」オプションを使用して、呼び出しの本文をフォーム値に明示的に設定しようとしました (次のように: data: { 'name' : $('#name').text( ) } )、しかし、それもあまり効果がありませんでした。コンテンツの長さが変更されたように見えますが (5 に、理由は不明です)、値はまだ逆シリアル化されていません。
任意のヒント?私はこれらのテクノロジーの両方に慣れていないため、どこから始めればよいかわかりません。