- ベストアンサー
ASP.NETでAjax通信する際に注意すべきポイント
- ASP.NET MVC3を使用してWEB画面でAjax通信を行う方法について説明します。
- 非同期通信の成功時にAjax応答のデータを取得する方法について教えます。
- Ajax通信で返されたデータが空の場合と正常な場合の処理について説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
うーん。。 よく見れば、このコードはMVC1時代のものですよね。 戻り値がstringで、それをeval()するために、Javascript側のライブラリを使用している。 かつてMSは、Ajaxライブラリとしてけっこうリジットなオブジェクトモデルを提供していましたが、いまはほとんどjQuery任せになっているので、MVC3時代のMicrosoftAjax.jsには、すでにそのようなオブジェクトは存在していないのかもしれません(推測で失礼)。 僕自身は、MicrosoftAjax.js、MicrosoftMvcAjax.jsは全く使ってないです。 いっそ、完全にMVC3スタイルで組んだらどうですか? jQueryも特に使ってなさそうなので削除、 <script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> として、コールバックを変更。 <script type="text/javascript" language ="javascript"> function disp(data) { if (data == "" || data==null) { alert("該当するデータがありません。"); } else { alert("タイトル:" + data.title); } } </script> 正しくJSONを戻していれば、これだけでJavascriptのオブジェクトが取得できるはずです。 あとエンコーディングはutf-8になってますよね?
その他の回答 (2)
- WebSurfer
- ベストアンサー率55% (33/59)
iQuery Ajax を使って web サービスもしくは WCF サービスを呼び出すようにしてはいかがですか? 自分のブログで恐縮ですが、具体例は以下の URL のページにあります。 呼び出すのは web サービスのメソッドでなくても、ページの静的メソッドでも可能です。
お礼
WebSurferさん お世話になります。 回答と参考URLありがとうございます。 ただ解読に時間がかかりそうなのでゆっくり拝見させてもらいます。
- shockatz
- ベストアンサー率80% (153/191)
コードを拝見すると、ASP.NET MVC1時代ふうのAjax通信なので、 <script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> <script src="../../Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> の2行は不要。 あと、蛇足だけど、javascript読み込みはドキュメントルートかヘルパ記述にしないと、パスが狂って大変じゃないかと。 <script src="/Scripts/jquery.min.js" type="text/javascript"></script> とか、 <script src='@Url.Content("~/Scripts/jquery.min.js")' type="text/javascript"></script> みたいに。
お礼
hockatzさん。お世話になります。 アドバイスありがとうございます。 しかし、不要な2行を削除してもget_data()メソッドでコンパイルエラーになってしまいます。 依然、原因は不明なままです。
お礼
shockatzさん お世話になります。 回答が遅くなり申し訳ありません。 自宅では環境がないため確認に時間を費やしてしまいました。 教えていただいた上記のやり方でJavaScriptのオブジェクトが取得できました。 本当にありがとうございます。 あと余談ですがdata.titleの箇所でdata.を打ち込んだ時点でインテリセンス機能が働くかと 思いましたが機能しなかったのは意外でした。一応、取得はできたのでよかったのですが。。