C#、asp.netでJson形式の文字列をjavascriptに渡してgooglemapで使用したいです。
json.netやらDynamicJson やらがインストールされていないと使用できないのでしょうか。
aspx.cs
dynamic dataSet = 取得したlist;
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(dataSet);
javascript
function json() {
$.ajax({
url: ××.aspx.cs,
type: "get",
dataType: 'json',
error: function () {
alert("情報の読み込みに失敗しました");
},
success: function (data) {
alert("data");
}
});
}
こちらでは、情報の読み込みに失敗しましたとアラートが出てしまいます。
http://qiita.com/rbtnn/items/b2ec6c7dee792e66ac75
http://aspnet.keicode.com/basic/jquery-ajax-basi …
この2つのサイトを参考にしています。
dataSetの中身に目的のリストが取得できているのは確認済みです。
何がいけないのでしょうか。
どうやったらJSONをjavascriptで読み込めるのでしょうか。
どなたかよろしくお願いします。
No.6ベストアンサー
- 回答日時:
うまく伝わっていないみたいですな。
Output.aspxとTestJson.aspxの2つに分けてください、ということです。
(Javascriptをjsファイルに入れるのはそれで構いません)
サンプルのページでは
・Output.aspx(ブラウザ表示用)
・TestJson.aspx(Ajax用)
・TestJson.aspx.cs(TestJson.aspxへのリクエストを受けた時に実行するコード)
の3つのファイルが用意されています。
表示するページは1つだけなのに、Output.aspxとTestJson.aspxの2つがあるのはなぜかというと、
その方が
・ページ表示時はhttp://localhost/Output.aspx
・Ajax通信時はhttp://localhost/TestJson.aspx
と、URLを見るだけでページ表示がしたいのか、Ajax通信がしたいのかを区別できるからです。
ありがとうございました。
無事表示されました。
Jsonの出力用のファイルが別途ないといけないのですね。
とても助かりました。
1つでもできるという方法も気になりますが、基礎知識をつけてから実践してみようと思います。
本当にありがとうございます。
No.5
- 回答日時:
> ただ、サンプルと違うのは
> aspx.csが二つではなく、
> TestJson.aspx
> TestJson.aspx.cs
> test.js
> という3つのファイルの構成になっていることです。
基礎が欠けているようなので詳しい説明はしませんが、
サンプル同様、aspx.csを2つ(ページ表示用とAjax用)にするというファイル構成にしてください。
1つでも不可能ではありませんが、混乱の元になります。
基礎がかけているとのこと、もっともでございます・・・。
なんとか補いながら実装したいのですが至らぬ点がありすぎて追いつかない現状です・・・。
javascriptはjsファイルに収めなければいけないので、
csファイルを二つにすることは難しそうです。
Ajax用というのはjsファイルではいけないのでしょうか。
No.4
- 回答日時:
Response.ContentTypeの設定の前にResponse.Clearメソッドを呼んでください。
Response.Clear();
//(ContentType設定・JSON出力)
Response.Write();
Response.End();
という流れでサーバ側は問題ないと思います。
HTML・JavaScript側にも問題があるような気もしますので、
サンプルと全く同じページを一度作ってみて学習することをおすすめします。
サンプルと同じページを作ったところ、正常に動きました。
ただ、サンプルと違うのは
aspx.csが二つではなく、
TestJson.aspx
TestJson.aspx.cs
test.js
という3つのファイルの構成になっていることです。
スタートページはTestJson.aspxになっています。
Output.aspxはありません。
csでデータ作成後、jsファイルでjsonの値を取得して、画面で表示するような流れにしたいです。
javascriptではjson()を他のメソッドから呼んでいます。
なぜResponse.Write();を消さないとメソッドを通らず画面にjsonを全てを表示してしまうのでしょうか・・・。
大変困っています・・・。
No.3
- 回答日時:
> すみません、FireFoxが使用できる環境になく、IEのみでの検証でなんとかなりませんでしょうか・・・。
IE9以降であれば、開発者ツールから通信の内容を確認できます。
http://www.atmarkit.co.jp/ait/articles/1106/16/n …
> 記載した通り、
> dynamic dataSet = 取得したlist;
> System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
> serializer.Serialize(dataSet);
> としか記述していません。
http://qiita.com/rbtnn/items/b2ec6c7dee792e66ac75
のコードにもあるように、
JSON化したデータをResponse.Writeで出力しないと意味がありません。
(Response.Writeを使わなかった場合、通常のHTMLページがレスポンスとして送出されます)
この回答への補足
Response.End();をコメントアウトしたところ、目的のjavascriptに遷移してくれましたが、
やはり「情報の読み込みに失敗しました」のアラートが呼び出されてしまいます・・・。
しかも画面上部には取得したリストが表示されっぱなしです。
表示されているのに取得できないのはどういうことでしょうか・・・。
URLも間違っていません。
>JSON化したデータをResponse.Writeで出力しないと意味がありません。
Response.Writeを追記したところ、画面に取得したListが全て表示されてしまいました。
デバッグではjsonを呼び出しているjavascriptを通過してくれませんでした。
どうしたらよいのでしょうか。
No.2
- 回答日時:
FirefoxのWebコンソール等でレスポンスの内容を確認してみてください。
JSON形式でレスポンスが返ってきていないと思います。
とりあえずaspx.csのJSON送信部分を載せていただけますか?
すみません、FireFoxが使用できる環境になく、IEのみでの検証でなんとかなりませんでしょうか・・・。
IE上でデバッグをかけてみましたが、よくわかりませんでした。
>とりあえずaspx.csのJSON送信部分を載せていただけますか?
これはどういうことでしょうか。
記載した通り、
dynamic dataSet = 取得したlist;
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(dataSet);
としか記述していません。
やはり送信するには何か記述が必要なんですよね?
いろんなサイトを見たのですが、そのような記述が見つからず困っています・・・。
hiddenとかにdataSetを渡せばよいのでしょうか?
stringではないとエラーが発生しているのですが・・・。
すみません・・・。
No.1
- 回答日時:
詳しい部分は見ていませんが、AjaxリクエストのURLがおかしいです。
××.aspx.csは「××.aspxを表示するためのコード」が書かれているファイルですので、
クライアントが××.aspx.csにアクセスすることはありません。
(できてしまったらセキュリティ的によろしくない)
URLを××.aspx.csではなく××.aspxにして試してみてください。
ちなみに、Webアプリのデバッグには
FiddlerやIEの開発者ツール、FireFoxのWebコンソール等が役立ちますので、
これらの使用を推奨します。
××.aspxと記述しましたが、やはり取得できません。
そもそも、aspx.csの記述がそれだけでaspxに渡るのでしょうか・・・?
渡っていないから表示されていないのでしょうが、書き方がわかりません・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript json形式データのデータ連携について 4 2022/04/05 23:01
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript SQLでデータベースから返ったデータのJSON形式生成について 1 2022/04/06 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvファイルを読み込み、該当項...
-
Temporary Internet Filesにあ...
-
Vba SelStart、SelLen教えてく...
-
小数点入力チェック
-
文字を移動させその位置を表示...
-
初心者です。gulpでコンパイル...
-
ブラウザからエクセルを開く方法
-
ASP(VBS) ←→ JavaScript の変数...
-
VB.NET2003 テキストボックスに...
-
MATLAB で 連番処理をしたい
-
delete[]と、delete演算子の明...
-
エクセルVBA/ Formatで文字列が...
-
jqueryのbxsliderをマウスオー...
-
javascript:void(0)とは何でし...
-
VBA SORT Applyでエラー
-
ブラウザ自体の事じゃなくてJav...
-
以下のコードを実行しても、オ...
-
六曜カレンダー
-
「終了していない文字列型の定...
-
gas 全角数字を半角数字に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvファイルを読み込み、該当項...
-
htmlのfileタグに自動で値を入...
-
テキストファイルの更新日時を取得
-
ページを一回だけリロードさせ...
-
javascriptでフォルダ内のファ...
-
JavascriptでのExcel起動について
-
JSでファイル数取得
-
jsファイルを閲覧者がダウンロ...
-
contenteditableで編集した内容...
-
javascriptでエクセルデータ読...
-
javascriptの効かないサーバー...
-
フォルダ内のファイル一覧
-
動的ファイルの最終更新日を取...
-
テキストファイルの一行目から...
-
JAVAスクリプトで商品コードか...
-
ホームページ内の新着情報を簡...
-
javascriptでJSONを取得する方法
-
JavaScript(ライブラリ)のキ...
-
xmldoc.loadで複数のファイル...
-
JavaScriptで検索
おすすめ情報