• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ASP.NET MVCのAjaxフォーム検証)

ASP.NET MVCのAjaxフォーム検証方法とjsonでの結果取得について

onosの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.1

> 質問なのですが、ここにあるような、「フォームを送信」して、「結果をjsonでもらう」処理は > 可能なのでしょうか? > 結果の取得は非同期?になるような感じですが、Ajaxは対応できるでしょうか? えーと、Ajaxと言う言葉をどういう意味で使われているでしょうか。 通常上記のような処理を非同期で行うものをAjaxと呼ぶので、この処理にAjaxで対応できるか?と聞かれると、何がわかっていて何がわかっていないのか、さっぱり判断できない、という感じになります。 この手の処理は最近JQueryを利用することが多いと思います。 Ajaxという言葉から一旦離れて、JQueryとASP.NET MVCの連携、ということで情報を探すと解決策がみつかるかもしれません。

nayutax
質問者

補足

onosさま(どっとねっとふぁん様?でしょうか 某会議室でもいつもお世話になっています。 自分は新参者のSEで、いつも顧客側デザイナの要求と社内外のPGとの間に立っているものです。 仕様を決めるにあたって、顧客の要求を詳細設計に落し込む時点で悩んでおります。 一般的に云う「Ajax」で、「画面遷移なしに非同期処理を行える」という点は確かに理解しているのですが、その実装が正確にわかりません。 ・Form形式になっている入力フォームがあるとして、 ・「送信」ボタン押下で、入力内容を検証→NGならばメッセージ出して再入力をうながし、 ・送信直前に「本当に更新しますか?」確認メッセージを出して、 ・送信結果、OKならば画面の上下に更新された関連情報を出して、なおかつ「更新されました」というメッセージも出す。 という内容です。 これを、jQueryのプラグインとASP.NET MVCのAjaxヘルパー機能(@Ajax.BeginFormや@Ajax.ActionLinkなど)を組合せて間違いなく実現する手段が知りたいのです。 自分の設計はいつもレビューで「実装への考察が甘い」とPGさんに大不評です。 お客様が希望される内容を設計しているだけなのですが。。

関連するQ&A

  • ASP.NET MVCでFancyboxを使いたい

    いつも大変お世話になっています。 今、ASP.NET MVCでサイトを構築中です。苦戦してます。。 中に入力フォームがあり、その中でサブウィンドウ的に入力ウィンドウを開いて、補足的な入力を行う仕様になっています。 普通なら、別の入力画面に遷移させるのですが、あまりにも入力項目が少ないため、遷移はさせたくなく、また、別ウィンドウもポップアップ対策などあって採用できません。 そこで、ヘルプウィンドウなどで使用している「Fancybox」を使いたいのですが、ASP.NETのプログラムサンプルがなく、大変に苦戦しております。 http://fancybox.net どなたか、参考意見だけでも拝聴できないでしょうか? 藁にもすがるつもりでお願いいたします。 【仕様】 ASP.NET MVC3(IIS7.5)+jQuery 【要件】 ドロップダウンリストである項目を選ぶ -> Fancyboxで入力ウィンドウを「モーダルで」開く -> テキストを入力 -> 「閉じる」ボタンでFancyboxを閉じる(未入力状態では閉じるボタン不活性) フォーム全体の入力完了後、「送信」ボタンで内容を送信 【不明点1】 ドロップダウンで選んだ項目によって、Fancybox画面が変化するため、動的にフォームを表示する必要があので、その方法(静的htmlの表示はできています) 【不明点2】 Fancyboxでの入力値を保存する方法 現状は以下のコードで試していますが、"error loading response"とか出て何も表示されません。 $('#selection').change(function(){ $.fn.fancybox({ // 何か他のオプションが必要なのでしょうか? href : 'subpanel?type=albyter?type=' + $(this).val(); ); } }); public ActionResult subpanel(string type){ // ここもわかりません。返すのはビュー?それともパーシャルビュー? // 今はパーシャルビューを返していますが。。 var subPanelModel = new SubPanelModel(type); return Partial("subpanel", subPanelModel); }

  • AjaxとMVCについて

    こんばんは。Ajaxなんですが、テキストフィールドに入力して、送信ボタンを押したら、jspに飛ばして、データベースを呼び出して、 <div id="result"></div>のところに、飛ばしたjspの中の出力を反映させているのですが、飛ばしたjspで、データベースの接続、結果セットの取得、responseTextで返すテキストの出力など、全て行っているのですが、最近サーブレットやJavaBeansの勉強に入り、なるべくMVCを意識して、データベースの接続や結果セットを取得するあたりまでは、サーブレットやJavaBeansを使って行いたいのですが、そういった連携の仕方がどうも思いつきませんでした。以下が大まかなコードですが、 JavaScriptのコードです。 //表示 var httpObject; function selectRequest(){ if(window.XMLHttpRequest){ httpObject=new XMLHttpRequest(); } //途中省略します。 httpObject.onreadystatechange=display; //省略します。 httpObject.open("GET","kakunin.jsp?nen="+encnen,true); httpObject.send(null); } function display(){ if(httpObject.readyState==4 && httpObject.status==200){ document.getElementById("result").innerHTML=httpObject.responseText; //残り省略します } おおまかですが、kakunin.jspの内容は以下のようになっています。 String nen = request.getParameter("nen"); PreparedStatement ps = db.prepareStatement("select * from kintai where nen=?"); ps.setInt(1, Integer.parseInt(nen)); ResultSet rs = ps.executeQuery(); if (rs.next()){ ここでout.println("<table><tr>……</table>");みたいな感じでresponseTextを作っています。 } ジャバスクリプトのコードで、httpObject.open("GET","kakunin.jsp?nen="+encnen,true); の部分なんですが、ここのkakunin.jspをサーブレットにしたら、responseTextをサーブレットで作らなくてはならないような事になりそうな気がしてやめました。httpObject.openのところでkakunin.jspに要求しているので、responseTextもkakunin.jspの出力でないといけないとは思うのですが、その間どこかでサーブレットやJavaBeansを呼び出して、複雑な処理をそっちにまかせたいのですが、jspからサーブレットを呼び出す方法は、<form method="post" action="サーブレット名">ぐらいしか知らず、これは今回関係ないと思いました。 DWRとかいうのもあるみたいですが、最初はなるべく原始的なやり方で作りたいので、そっちはまだよく調べていません。 発想自体がおかしいかもしれませんが、Ajaxを使っている時、jspやサーブレットなどをうまく連携させて、きれいにまとめたコードを記述する方法などございましたらアドバイスの方よろしくお願いします。

    • ベストアンサー
    • Java
  • Ajax でフォーム内容をサーバに送信

    Ajax でフォーム内容をサーバに送信しようとしています。 テキストであれば、text.valueで値を送信できるのですが、 ラジオボタンの場合、radio.valueやradio.selectedvalueでも どのラジオボタンが選択されているのかが判別できません。 radioのオブジェクトのまま送信したらいいのでしょうか? Ajaxでラジオボタンを判別するにはどのようにしたらいいのでしょうか? よろしくお願いします。

  • Struts1.3.10でAjax連携

    Struts-1.3.10を使用しています。 データの登録・更新・削除等を行っているのですが、毎回の画面更新がだるいので Ajaxを利用して画面遷移を発生させないような処理を行おうと思っています。 JSFなどはf:ajaxタグなどで容易に再描画を行うことができるようですが このシステムではJSFは使用していません。 このシステムをStruts2に移行するのもStruts1と2では互換性がないということでためらっています。 そこでStruts1系でAjaxを利用して画面の一部(データの一覧部分など)を再描画させるための フレームワーク等があれば教えていただけませんか。 調べているとDWRを使用するというのがありましたが例としてあげられているのがStruts2系のものが多かったです。Struts1でも問題なく使用できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ajaxとphpでapiのデータ取得

    上手にお伝えできるか不安ですが、以下の事象の原因で考えられるものがありましたら、アドバイスいただきたいです。 [処理内容] js(ajax)でphpをたたいて、GAのapiに接続、ページビューを取得して その取得内容もとにphpで静的ファイルを生成(jsonやhtml)して、任意の箇所で表示させています。 アクセスランキングのようなものになります。 ---------------------------------------------------- jsでphp呼び出し→phpでGAにアクセス→GA→phpで受け取る→jsonやhtml生成 ---------------------------------------------------- [気になる事象] GAからのデータの取得やjsonの生成は概ねうまくいっているのですが、時にデータが取得できない時があります。 何故かphpファイルを更新する(ソースに改行を加えただけ)と正しいデータが取得できたりします。 そんなことが動作に影響するのかわからないのですが、また1日後とかにデータを取得して表示させようとすると、 phpファイルを更新しない限り前回取得した状態から更新されなくなります。 キャッシュみたいなものが介在するのかわからないのですが、ajaxの部分の記述でcashはfalseとしています。 ちなみにGAの管理画面ではページビューが取れているので、apiとphpの間が怪しいといえば怪しそうな気もしています。 尚、静的ファイル(jsonやhtml)のタイプスタンプの更新は、js(ajax)にアクセスする度に正しく行われている為、 それらのファイルの生成そのものは問題ないと思われます。 拙い説明で恐縮ですが、 どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • Ajaxのエンコードで

    私はshift_JISで作成したCGIのページがあるのですが、 Ajaxを導入しようとしたときに、Ajaxというか Javascriptでは、utf-8しか認識しないととあるサイトに書いてあったのですが、 そのCGIのページをphpに変更するにはものすごく多大な時間が 必要になってしまうんですが、CGIをutf-8仕様にするのも大変です AjaxでShift_JISに変換するような事はできませんでしょうか? http://javascriptist.net/ref_prototype/ajax.periodicalupdater.html のサイトに乗っている <script type="text/javascript" src="/js/prototype.js"></script> <script type="text/javascript"> var myajax; function execute() { myajax = new Ajax.PeriodicalUpdater( "container", "./member.cgi", { "method": "get", "parameters": "id=$id", frequency: 5, // 5秒ごとに実行 onSuccess: function(request) { // 成功時の処理を記述 // alert('成功しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); // ↓IEでもキャッシュを読み込まずに毎回リモート接続を実行するためのコード(パラメータの書き換え) var str = myajax.options.parameters; var hash = str.parseQuery(); hash["ajax_request_id"] = Math.random(); hash = $H(hash); myajax.options.parameters = hash.toQueryString(); }, onComplete: function(request) { // 完了時の処理を記述 // alert('読み込みが完了しました'); // jsonの値を処理する場合↓↓ // var json; // eval("json="+request.responseText); }, onFailure: function(request) { alert('読み込みに失敗しました'); }, onException: function (request) { alert('読み込み中にエラーが発生しました'); } } ); } </script> を使用して自動更新をしようと思っているのですが

  • jQuery $.ajax JSON形式のPOST

    jQuery $.ajax JSON形式のPOSTでフォーム内容を送信し、送信先のPHPでメール送信させるプログラムをかいているのですが、どうしても$.ajaxのerrorが呼び出される状況です。errorが呼び出されますが、PHPの方のメール送信はできております。 PHP側の出力がうまくいっていないのではないかと思いますが、原因がわかりません。どなたかご教授いただけないでしょうか?宜しくお願いします。 ---js--- $("#send").click(function(){ var NAME = $('#name').val(); var EMAIL = $('#email').val(); var TITLE = $('#titlel').val(); var COMMENT = $('#comment').val(); $.ajax({ url : "sendmail.php", dataType : "json", data : {name:NAME, email:EMAIL, title:TITLE, comment:COMMENT}, type : "post", success : function(data){ if(data != ''){ alert(data.result); } }, error : function(){ alert("通信に失敗しました。"); } }); }); ---sendmail.php--- if($_SERVER["REQUEST_METHOD"] != "POST"){ header("HTTP/1.0 404 Not Found"); return; }else{ //メール送信処理 (省略) $message = "送信完了メッセージ"; $result = array('result' => $message); echo json_encode($result); }

  • Webフォームでドリルダウンを達成したい

    VisualStudio2005でWebフォームを開発中です。GridViewである値の集計結果を表示するような画面設計(レポート)ですが、この表一行一行から詳細の情報を得る場合、別画面に遷移するのではなくツリービューのような感じで当該行の下に行を現してドリルダウンするようなことを達成したいです。 プラス記号を押さない限り、隠れている行は現われてこない、みたいなことです。 VisualStudioのツールボックスにそれを達成するためのコントロールがあるのでしょうか? Ajaxコントロールの部類でしょうか? 達成方法ご存知の方がございましたらご教示をよろしくお願い致します。

  • フォームからメール送信

    いつも参考にさせて頂いています。 現在メールフォームを作っていまして、Javascriptで作成したフォームからphpで作った確認画面へ遷移(form action=...phpにて)し、確認画面の送信ボタンをクリックした時点で指定したメールアドレスへ内容を送信 という流れで考えています。post変数をphpで受け取って確認画面を表示するところまではいいのですが、確認画面の内容をメールアドレスに送信するにはどうしたらいいのでしょうか? まだまだ初心者ですので噛み砕いて説明頂けば幸いです。 どうか宜しくお願いします

    • ベストアンサー
    • PHP