質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

解決済

1回答

10624閲覧

ajaxでjson形式のデータをGETし画面へ表示したい

sanezane

総合スコア91

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2018/05/28 04:37

編集2018/05/28 05:07

json generatorにて生成したデータをhttpのGETメソッドにて取得し画面へ表示させるサンプルを作成しております(実現性検証)。当方、製造の経験もなく試行錯誤しながら検証を行っておりますがいよいよ行き詰ったためご相談いたします。

やりたいこと

ボタンをクリックした際に、指定したjson形式のデータを取得し画面に表示したい

参考にしたサイトjQuery $.ajaxで通信を行ってJSONを取得するサンプル

現状

通信の確認はできたが、データの取得・表示(コメント//3.~5.が実現できない)
・data1の変数宣言がないので宣言するべき?どこで?

イメージ説明
例...friendsの1番目のname など、、、
※下図のデータ内容参照
イメージ説明

コード

javascript

1 //ajaxTest 2 $(function () { 3 $('#btn1').click( 4 function () { 5 $("out6").html("ajaxにてデータ取得します"); 6 7 8 //1.$.ajaxメソッドで通信を行う 9 // dataでは、フォームの内容をserialize()している 10 // →serialize()の内容は、cs1=custom1&cs2=custom2 11 $.ajax({ 12 url: 'http://www.json-generator.com/api/json/get/cfzfHNIVki?indent=2', 13 type: 'GET', 14 datatype: 'json', 15 //2. doneは通信に成功したときに実行される処理 16 //引数のdata1は通信で取得したデータ 17 //引数のtextstatusは通信結果のステータス 18 //引数のjqzXHRは、XMLHttpRequestオブジェクト 19 }).done(function (data1, textStatus, jqXHR) { 20 $("#out1").html(jqXHR.status); 21 $("#out2").html(textStatus); 22 23 //3. キーを指定して値を表示 24 $("#out4").html(data1["age"]); 25 26 //4.オブジェクトをjson形式の文字列に変換 27 var data2 = JSON.stringify(data1); 28 console.log(data2);//コンソールへjson形式で表示 29 30 //5.json形式の文字列をオブジェクトにし、キーを指定して値を表示 31 //キーを指定して値(/www.json-generator.com/api/json/)を表示 32 var data3 = JSON.parse(data2); 33 $("#out5").html(data3["friends[0]"],["name"]); 34 35 //6. failは、通信に失敗したときに実行される 36 }).fail(function (jqXHR, textStatus, errorThrown) { 37 $("#out1").html(jqXHR.status); //jqXHR.statusを表示 38 $("#out2").html(textStatus); //textStatusを表示 39 $("#out3").html(errorThrown); //errorThrownを表示 40 41 //7. always は 成功、失敗に関わらず実行 42 43 }).always(function (){ 44 $("#out6").html("complete"); //表示3 45 46 }); 47 48 }); 49 });

html

1<p>jqXHR.statusを表示:<span id="out1"></span></p> 2<p>textStatusを表示:<span id="out2"></span></p> 3<p>errorThrownを表示:<span id="out3"></span></p> 4<p>表示1(out4):<span id="out4"></span></p> 5<p>表示2(out5):<span id="out5"></span></p> 6<p>表示3(out6):<span id="out6"></span></p> 7 8<div class="tab-pane" id="sampleContentC"> 9 <p>ATC送信架No.3の内容</p> 10 <p>ボタンを押すと通信が始まります</p> 11 12 <form id="form1"> 13 <input type="button" id="btn1" value="ボタン1"><br /> 14 テキストボックス1<br /> 15 <input type="text" name="cs1" value="custom1" maxlength="10"><br /> 16 テキストボックス2<br /> 17 <input type="text" name="cs2" value="custom2" maxlength="10"> 18 </form> 19 </div> 20

ご教授願います。
console.log(data1)を追加し、実行した際のキャプチャ
イメージ説明

サンプルjson(一部抜粋)

json

1[ 2 { 3 "_id": "5b0b4f0cbd378d1875f3f77e", 4 "index": 0, 5 "guid": "493476ca-aeac-47d0-bc92-0f68ed69a450", 6 "isActive": false, 7 "balance": "$1,357.46", 8 "picture": "http://placehold.it/32x32", 9 "age": 26, 10 "eyeColor": "brown", 11 "name": "Rowland Baird", 12 "gender": "male", 13 "company": "GEEKMOSIS", 14 "email": "rowlandbaird@geekmosis.com", 15 "phone": "+1 (901) 473-3099", 16 "address": "763 Aurelia Court, Woodruff, Palau, 9489", 17 "about": "Ullamco anim sit dolore enim nostrud in sunt deserunt consequat anim ut. Eiusmod eu incididunt ut consectetur. Non laborum reprehenderit pariatur eu commodo ad excepteur quis aliquip exercitation proident in.\r\n", 18 "registered": "2017-09-04T10:00:50 -09:00", 19 "latitude": 4.862184, 20 "longitude": -106.437544, 21 "tags": [ 22 "incididunt", 23 "tempor", 24 "sint", 25 "amet", 26 "consequat", 27 "mollit", 28 "aute" 29 ], 30 "friends": [ 31 { 32 "id": 0, 33 "name": "Weiss Dale" 34 }, 35 { 36 "id": 1, 37 "name": "Kristen Hardin" 38 }, 39 { 40 "id": 2, 41 "name": "Stewart Foley" 42 } 43 ],

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/28 04:47

data1をconsole.log()で出力した結果をご提示ください。
退会済みユーザー

退会済みユーザー

2018/05/28 04:49

あなたの開発環境(OS, .NET, IIS, MVC, Visual Stusio のバージョンなど)を書いてください。
退会済みユーザー

退会済みユーザー

2018/05/28 04:51

MVC4 のタグが付いてますが間違いないですか? もし違うのであれば、他に ASP.NET とか ASP.NET MVC Framework というタグがありますので、そちらを使ってください。
退会済みユーザー

退会済みユーザー

2018/05/28 04:55

あと、JSON Generator とかは使ったことのない(その使い方を学んでまで回答を書く気力のない)自分のような回答者・閲覧者のために、サンプル JSON 文字列をアップしてもらえませんか?
sanezane

2018/05/28 05:08

本文にイメージ、サンプルjsonの一部抜粋を追加しました。
退会済みユーザー

退会済みユーザー

2018/05/28 05:16 編集

> サンプルjson(一部抜粋) ←抜粋でなく実際にエラーなくパースできる完全なサンプルをアップできませんか? 長すぎてアップできないような場合はそもそも質問のサンプルとして適切ではないので短くするよう考えてください。
m.ts10806

2018/05/28 05:12

data1[0]["age"] ではどうでしょうか。datatype: 'json'の時点でjsonオブジェクトになっているはずなので、わざわざstringifyを挟まなくても良かったと思います。
退会済みユーザー

退会済みユーザー

2018/05/28 05:13

あなたの開発環境は書いていただけたでしょうか? (上でお願いした件)
sanezane

2018/05/28 05:24

mts10806さん //3.のageについてはご指摘の記述で表示できました!! 配列形式の場合(//5.)がまだ表示できずにいます。
sanezane

2018/05/28 05:29

SurferOnWwwさん 開発環境について:windows7,visualstudio2017です。その他は現在席を外しているため少々お待ちください
guest

回答1

0

ベストアンサー

下記は「添え字が0から連番の配列」となります。

json

1[ 2 {}, // 0番目 3 {}, // 1番目 4 .... 5 {} // n番目 6]

それにより私は「data1[0]["age"] ではどうでしょうか」とコメントして、
それで想定の値がとれたようですね。
その部分をヒントに残っている5の部分もどうにかなりそうに思います。
""で囲ってしまっては単なる文字列にしかなりません。
開発ツールのコンソールに「そんなキーはないよ」ってエラーが出ていそうに思いますが。。

あと、.html()には第2引数はありません。

任意のhtmlが入るhtmlString かhtmlを返すfunctionのみですね。

投稿2018/05/28 05:33

編集2018/05/28 05:35
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanezane

2018/05/28 06:33

ありがとうございます!!まだサンプルですので、またお世話になることがあるかと思いますがよろしくお願いします!
m.ts10806

2018/05/28 06:40

解決したようで何よりです。 「サンプル」は実データに近い形のサンプルである必要があります。ご注意ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問