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

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

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

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

3回答

21863閲覧

「変数」を「ページ遷移先」で使いたい

t33

総合スコア33

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2016/11/16 16:21

編集2016/11/17 05:14

monacaで開発したアプリから外部サイトに遷移するときに、
**「monacaで開発したアプリの変数」「外部サイト」**に渡したいのですが
方法が分からなかった為質問致しました。

javascript⇒javascriptで配列tmpDataを渡したいのですが・・・。

初心者なりに色々調べたのですが全く検討も付かない状態で途方に暮れています。
ご教授頂けないでしょうか。よろしくお願い致します。

「monacaで開発したアプリ」のindex.html

javascript

1 2var tmpData = [];//ページ遷移先に渡したい変数 3tmpData[0] = "test0"; 4tmpData[1] = "test1"; 5 6var ref = cordova.InAppBrowser.open('ページ遷移先のURL'); //URLに飛ぶ

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

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

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

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

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

guest

回答3

0

monacaでデータを保存するには三通りの方法が考えられると思います。

  • localStorageに保存する
  • DBに保存する
  • スマホに保存する

一番手軽に使えるのはlocalStorageだと思います。

javascript

1//あるページ 2//localStorageにデータを入れる 3localStorage.setItem('data', data) 4 5//遷移先のページ 6//localStorageからデータを出す 7var data = localStorage.getItem('data')

ただの変数なら上記のやり方で十分ですが、配列やオブジェクトなら

javascript

1var tmpData = ['test1','test2'] 2localStorage.setItem('tmp', JSON.stringify(tmpData)) 3var tmpData = JSON.parse(localStorage.getItem('tmp'))

投稿2016/11/16 17:50

kekemoto

総合スコア34

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

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

t33

2016/11/17 14:41 編集

誤っていたり認識が異なっていたら申し訳ありません。 色々と調べた結果「localStorageに保存する」、「スマホに保存する」方法は今回は利用出来なさそうという認識をしています。 「localStorageに保存する」場合monacaアプリとサーバーの「オリジン」(プロトコル、ドメイン、ポート番号)が異なる為データを共有出来ませんでした。 「スマホに保存する」場合「テキストファイル」や「csv」といった外部ファイルに書き込むといった内容だと思うのですが、そもそもjavascriptでは外部ファイルをいじれないということを知りました。(directXが使える環境なら出来るらしいのですが、セキュリティの関係から推奨されていないそうです。) ⇒再度調べてみたのですがやはりdirectXを使わないと出来ないようです。。 残りは仰っていた「DBに保存する」方法ですが、知識がないため他の代替案はないかを検討しており、変数を渡すことが出来たらやりたいことが出来るようになる為質問した次第です。 (本当はローカルストレージや外部ファイルを使えればいいのですが・・・)
guest

0

外部サイトへ送るんですよね?普通にGETで良さそうですが。
見当違いでしたらすいません。

javascript

1//var tmpData = [];//ページ遷移先に渡したい変数 2//tmpData[0] = "test0"; 3//tmpData[1] = "test1"; 4var ref = cordova.InAppBrowser.open('http://example.com?data0=test0&data1=test1'); //URLに飛ぶ

投稿2016/11/16 18:23

編集2016/11/16 18:26
fromageblanc

総合スコア2724

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

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

t33

2016/11/17 05:00

しっかりと記載していませんでしたすみません。 test0、test1等の文字列を渡すのではなく、tmpDataの配列を渡したいのですが 配列は渡せないんだろうなぁと思っていたのでご教授頂いた方法以外で探しておりました。 (この方法でも渡せるかもしれないのですが、実際は配列の数がかなり大きい為、リンクの文字が長くなってしまうと思われる為やめた経緯があります。。)
fromageblanc

2016/11/17 05:13

URLが長くなるのが嫌ならangularjsの$httpサービスなりajaxでpostするのはどうしょうか。外部サイトに変数を渡すというのはちょっとできる気がしないです。ページ遷移ならkekemotoさんの方法で良いと思いますが。
t33

2016/11/17 05:22

ご教授ありがとうございます。 angularjs、ajaxの知識が0の為一度調べてみます。 解決した際は再度書き込みを行いたいと思います。
guest

0

自己解決

「GET」を試したところうまくいきました。配列も渡すことが出来ました。
方法に関しては以下をご参照ください。
GETで値を渡す方法

Memoとして出来なかったことも記載しておきます。
【調査・試したけど出来なかったこと】
①「変数」自体を渡す
⇒色々試しましたが出来ませんでした。

②「ローカルストレージ」のデータを共有する
⇒monacaアプリとサーバーの「オリジン」(プロトコル、ドメイン、ポート番号)が異なる為データを共有出来ませんでした。

③「スマホに保存する」
⇒Javascriptではそもそも出来ない(DirectXを使用すれば可能ですが、セキュリティの観点から断念しました。)

④「Ajax」を使用して、「POST」で値を渡す
⇒monacaアプリから外部サーバーに飛ばす際に「InAppBrowser」を使いましたが、「InAppBrowser」ではPOSTが出来ないとのことが分かり断念しました。

投稿2016/11/19 19:33

編集2016/11/19 19:35
t33

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問