今回はjQueryを使った非同期通信を解説する。また例によってここで記載するサンプルコードはMyClipで実装したコメント投稿を簡易化したものになる。
まずコメントを入力するtextareaと保存ボタンを用意する。
-details.aspx-
<div>
<div>
<textarea id="commentArea"></textarea>
</div>
<input id="saveButton" type="button" value="Save"/>
</div>
ついで、JavaScriptでsaveButtonのClickイベントをハンドルし、jQueryのajaxメソッドでサーバサイドと非同期通信を行う。
-JavaScript-
$(document).ready(function() {
$('#saveButton').click(function(){
try {
$.ajax({
type: "POST",
url: "/Clip/Comment",
data: { clipId: _clipId, commentText: $('#commentArea').val() },
contentType: "application/x-www-form-urlencoded",
dataType: "json",
success: function(msg) {
// code here...
},
error: function(e) {
// code here...
}
});
}
catch (e) {
// code here...
}
});
});
ここで注意が必要なのがcontentTypeの指定だ。application/jsonを指定するとなぜだか引数が常にnullになる。
ClipControllerの処理は以下の通りだ。
-ClipController.cs-
public ActionResult Comment(
int clipId,
string commentText)
{
// saving data code here...
return Json(new
{
// return data here...
});
}
以上で一連の流れは終了だ。いたって簡単に非同期通信を行えるのが分かるだろう。またController側も特別な記述をとくに必要としない。次回はControllerのActionではなく、WebServiceを呼び出す方法を解説する。
0 件のコメント:
コメントを投稿