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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JSON

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

2299閲覧

Javascript 手動で任意のパラメーターを入力し、それに紐付いたデータをJSONファイルから取得したい

spellbound

総合スコア190

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JSON

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/04/21 03:05

編集2017/04/21 03:37

何を知りたいのか

例えば、JSONデータを全て取得してjsonという変数にパースしたデータを保存したとします。
その変数から任意のデータを取得することはできましたが、IDを手動で入力してそのIDに基づいた情報のみ自動で取得する処理の方法がわかりません。

想定しているフロー

  1. HTMLのタグ内に任意のIDを入力する(WordPress側でIDを入力)
  2. WordPress側で記事を更新する
  3. ブラウザ上で見た時に、IDに紐付いた情報に自動的に書き換わっている

Youtubeの埋め込みコードを元に説明すると、この動画のIDは「QVy4uQjIkfY」と考えられます。

html

1<iframe width="560" height="315" src="https://www.youtube.com/embed/QVy4uQjIkfY" frameborder="0" allowfullscreen></iframe>

このIDを変えることでブラウザ上で表示されるコンテンツも変わる仕組みを作りたいと考えています。
理想は、iframe化なのですが、javascriptに慣れていないため簡単に作れないかと思っています。
現状は、HTMLファイルにタグを埋め込んでinnnerHTML等で内容を変更しています。

完了していること

  • Web上のJSONファイルから情報を取得し、innerHTML等で任意の情報をブラウザに表示すること
  • タイムアウト処理
  • リクエストヘッダ

どんなことを実現したいのか

  • Markdown方式のように、手動で任意のIDを入力したらその値によって表示されるものが異なるような処理(可能であればPure Javascriptで実装したい)

現状

html

1<img id="ikyu-acm-image"> 2<h3 id="ikyu-acm-name"></h3> 3<p id="ikyu-acm-area"></p> 4<p id="ikyu-acm-price"></p>

javascript

1var xhr = new XMLHttpRequest(); 2var timerId = window.setTimeout(function() { 3 xhr.abort(); 4}, 5000); 5xhr.onreadystatechange = function() { 6 if (xhr.readyState == 4) { 7 window.clearTimeout(timerId); 8 if (xhr.status == 200) { 9 var json = JSON.parse(xhr.responseText); 10 document.getElementById('acm-image').src = json.XXXXX.XXXXX; 11 document.getElementById('acm-name').innerHTML = json.XXXXX.XXXXX; 12 var smallAreaNm = document.getElementById('acm-area'); 13 smallAreaNm.innerHTML = json.XXXXX.XXXXX; 14 } 15 } 16}; 17xhr.open('GET', 'APIのURL', true); 18xhr.setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT'); 19xhr.send(null);

※ XXXXX.XXXXX = パラメーラー(秘密なため隠した)

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

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

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

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

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

kei344

2017/04/21 03:10

「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。
kei344

2017/04/21 03:20

「手動」とは?再現可能なHTMLとフローを提示ください。
退会済みユーザー

退会済みユーザー

2017/04/21 03:27 編集

改善されたとのことですが、自分には依然として「IDを手動で入力してそのIDに基づいた情報のみ自動で取得」という肝心なところが何をしたいのか分からないのですが・・・ ご参考 https://teratail.com/help/question-tips
spellbound

2017/04/21 03:38

伝え方が下手で申し訳ありません。おそらく自分の中でもどのように実装すれば良いのか固まってないため伝えきれないのかと思います。もうちょっと整理します。
spellbound

2017/04/21 03:38

一応、編集しました。
退会済みユーザー

退会済みユーザー

2017/04/21 03:47 編集

「IDを手動で入力してそのIDに基づいた情報のみ自動で取得」=「URL に ID を追加(例: http://example.com/ID)して AJAX で GET 要求し、ID で選択された情報を取得」ということですか? であれば、Web サーバー側で何とかするという話になると思うのですが。
spellbound

2017/04/21 03:52

Web上のAPIを叩いてJSON吐き出してそのデータをパースして変数に入れて表示という流れを想定していました。
spellbound

2017/04/21 03:52

ちなみに、上記の作り方を参考に進めればiframeは作れるのでしょうか?
退会済みユーザー

退会済みユーザー

2017/04/21 04:27

??? 質問欄の YouTube の話は参考に出しただけで、あくまで質問者さん自作の Web API から JSON 文字列を取得して何かするという話だと思っていたのですが、違うのですか?
spellbound

2017/04/21 04:48

あー、その例は削除リクエストしました。おっしゃる通り、自作のAPIです。
退会済みユーザー

退会済みユーザー

2017/04/21 05:09

堂々巡りになってしまっていますが・・・ 「その例は削除リクエスト」ということは、質問の YouTube の説明(ID を URL に含めて GET 要求)は忘れてくれと言ってます? そうすると先のコメントに戻って、自分には依然として「IDを手動で入力してそのIDに基づいた情報のみ自動で取得」という肝心なところが何をしたいのか分からないのですが・・・
guest

回答2

0

HTML

1<input id="inputId" type="text">

JavaScript

1var inputId = document.getElementById("inputId").value;

まずこれで入力フォームから任意の文字列を受け取れます。

JavaScript

1var data = json[inputId];

これでjsonから指定のパラメータを受け取れます。パースされたjsonオブジェクトはただの連想配列(または配列)なので、[]でパラメータ名を指定すればその値がとれます。

投稿2017/04/21 03:25

masaya_ohashi

総合スコア9206

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

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

0

ベストアンサー

理想は、iframe化なのですが、javascriptに慣れていないため簡単に作れないかと思っています。

iframe はHTMLの中に別のHTMLを読み込むようなものなので、とくにJavaScriptを必要としません。

【iframe 要素 - HTML | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/iframe

下記のようにして index.php 側でパラメータ(id)を受け取り、それを表示すればよいだけな気がします。

HTML

1<iframe width="560" height="315" src="https://example.com/index.php?id=1" frameborder="0" allowfullscreen></iframe> 2<iframe width="560" height="315" src="https://example.com/index.php?id=999" frameborder="0" allowfullscreen></iframe>

Ajaxでパラメータを渡すのであれば、send メソッドで送ればよいでしょう。

JavaScript

1xhr.send( 'param1=value1&param2=value2' );

【XMLHttpRequest - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest#send()

【XMLHttpRequest についてのメモ - Qiita】
http://qiita.com/sirone/items/412b2a171dccb11e1bb6

【XMLHttpRequest の使い方 - WebOS Goodies】
http://webos-goodies.jp/archives/50548720.html


特定の要素にidを埋め込んで、それを読み出すなら、例えば下記のようにします。

HTML

1<div class="hidden" data-id="777"></div>

JavaScript

1var data_id = document.querySelector( "[data-id]" ).getAttribute( "data-id" ); 2```**動くサンプル:**[https://jsfiddle.net/nnq3x9qa/](https://jsfiddle.net/nnq3x9qa/) 3 4 5document.querySelector - Web API インターフェイス | MDN6[https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector](https://developer.mozilla.org/ja/docs/Web/API/Document/querySelector) 7 8【element.getAttribute - Web API インターフェイス | MDN9[https://developer.mozilla.org/ja/docs/Web/API/Element/getAttribute](https://developer.mozilla.org/ja/docs/Web/API/Element/getAttribute)

投稿2017/04/21 05:22

kei344

総合スコア69398

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問