アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも大変にお世話になります。
今回ご相談させていただきたいのは、AJAXフォーム送信と、検証の仕方ついてです。

画面遷移なしでフォーム内容を送信し、データベースを更新したく思っています。
通常のフォーム検証と送信はできていますが、Ajaxになるとさっぱりわかりません。

欲しい挙動は、
1.Ajaxでフォーム内容を送信(その前に内容の検証
2.サーバサイドでフォーム内容を受け、DBを更新して、結果をjsonで返却
3.クライアント側で結果を受け、画面の一部を書き換え、

この「3」なのですが、書き換える内容がいくつかあるので、ASP.NET AJAXのような"UpdatePanel"は使えません。
あくまでjsonを読む必要がある感じです。

質問なのですが、ここにあるような、「フォームを送信」して、「結果をjsonでもらう」処理は可能なのでしょうか?
結果の取得は非同期?になるような感じですが、Ajaxは対応できるでしょうか?

コード例があれば最高ですが、どんな些細なご意見でも構いませんので、拝聴させていただけないでしょうか?
今すぐにコードを完成させなければいけない訳ではないので、若干の余裕がありますが、基本設計や画面設計に関わる部分なので、少し急いでおります。

なにとぞ皆様のお知恵をお貸しください。

A 回答 (2件)

おっしゃていることはよくわかるのですが、質問内容があまりに一般論すぎて回答のしようがない、ということですね。


こういう設計は実証したのちに考えるべきもので、最初から「最高の方法は何か」という結論は出しにくいですね。

これまでずっと、サーバサイドプログラムしかやったことのないPGには最初から理解できないので、そこは腹をくくってください。
しかもASP.NETとVB.NETなどという組み合わせはそれこそ特殊なので、ちょっと難しいかもしれません。

以下のジャンルで順に実装をテストしてみることをお勧めします。

jQueryな実装として
・jQuery.validationの実装
・jQuery.ajaxでの実装
・jQuery.formプラグインでの実装

MVC的な方法論として、
・Client Validation
・Remote Validation

Ajax/Htmlヘルパーな実装として
・Html.BeginForm
・Ajax.BeginForm
・OnSuccessコールバック

あともし英語が読めれば、この記事も読んでみてください。
http://stackoverflow.com/questions/9489195/diffe …

自分が思うには、jQueryでいこうが、Ajaxヘルパーでいこうが、どちらでも問題はないと思います。
あとは。ValidationとかConfirmationとか、Validation失敗後の戻しとか、全体を含んだForm処理のなられを確立することじゃないでしょうか?

自分なら、全部Ajaxヘルパーを使いますが。jQueryのフォーム処理は検証が絡むと煩雑なように思います。少なくともASP.NET MVCレベルの検証を行うなら、という意味で。
(phpのようにオンスクリーン検証はjavascript環境のみで、サーバサイドはエラー画面だけ出してhistory.back()してもらうんならどうでもいいんですが)
    • good
    • 0
この回答へのお礼

shockatz様、本当にいつもありがとうございます。
アドバイスの内容を参考に、一通りやってみます!
身近にMVCやjQueryに詳しい人間が全くいないもので、非常に困っていました。
そうですか! @Ajaxヘルパーが使えるんですね。良かったです!

またすぐ不明点が出てくると思いますので、そのまた見捨てずにアドバイスしてやってください。
本会は(も)本当にありがとうございました。

お礼日時:2012/10/09 01:25

> 質問なのですが、ここにあるような、「フォームを送信」して、「結果をjsonでもらう」処理は


> 可能なのでしょうか?
> 結果の取得は非同期?になるような感じですが、Ajaxは対応できるでしょうか?

えーと、Ajaxと言う言葉をどういう意味で使われているでしょうか。
通常上記のような処理を非同期で行うものをAjaxと呼ぶので、この処理にAjaxで対応できるか?と聞かれると、何がわかっていて何がわかっていないのか、さっぱり判断できない、という感じになります。

この手の処理は最近JQueryを利用することが多いと思います。
Ajaxという言葉から一旦離れて、JQueryとASP.NET MVCの連携、ということで情報を探すと解決策がみつかるかもしれません。

この回答への補足

onosさま(どっとねっとふぁん様?でしょうか

某会議室でもいつもお世話になっています。
自分は新参者のSEで、いつも顧客側デザイナの要求と社内外のPGとの間に立っているものです。
仕様を決めるにあたって、顧客の要求を詳細設計に落し込む時点で悩んでおります。

一般的に云う「Ajax」で、「画面遷移なしに非同期処理を行える」という点は確かに理解しているのですが、その実装が正確にわかりません。

・Form形式になっている入力フォームがあるとして、
・「送信」ボタン押下で、入力内容を検証→NGならばメッセージ出して再入力をうながし、
・送信直前に「本当に更新しますか?」確認メッセージを出して、
・送信結果、OKならば画面の上下に更新された関連情報を出して、なおかつ「更新されました」というメッセージも出す。

という内容です。
これを、jQueryのプラグインとASP.NET MVCのAjaxヘルパー機能(@Ajax.BeginFormや@Ajax.ActionLinkなど)を組合せて間違いなく実現する手段が知りたいのです。


自分の設計はいつもレビューで「実装への考察が甘い」とPGさんに大不評です。
お客様が希望される内容を設計しているだけなのですが。。

補足日時:2012/10/05 18:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!