今回は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 件のコメント:
コメントを投稿