PHPでWebアプリを組んでいます。
グラフをjavascriptのライブラリ(Plotly.js: https://cdn.plot.ly/plotly-latest.min.js)を使って表示しています。
単独のページに「$i = 10;」のようにあらかじめ数値をPHP側で配列に入れて
javascriptに渡してグラフを表示させるのはできました。
ところが別ページのFormからJavascriptで3個の単語をFormで送りつけると途端におかしくなります。
Formで受け取ったデータはすべて文字列のみです。
(問題点1)
グラフ表示のライブラリ(Plotly.js: https://cdn.plot.ly/plotly-latest.min.js)にうまく数値が送れません。
var array = <?php echo json_encode($array); ?>;
現状では、PCではグラフライブラリに渡す前までは表示できています。
(問題点2)
Webブラウザで,Formから送られて来た単語で検索し、その検索数を例えば以下の変数$kensakusuを例として、foreachなどのループでカウンタ変数としてぐるぐる廻して数えさせ
echo $kensakusu;
のようにして検索数を表示したいのですが、PCのWebブラウザでは問題なく表示できるのですが、
スマートフォンでは,数値が0になってしまいます。
これは、Formのページからの連携をなくせば普通にスマートフォンでも表示できます。
このようなご経験をなさった方がいらっしゃいましたらご教授いただけないでしょうか?
よろしくお願いします。
ちなみに、これまでに(int)のキャストはできる限りしています。(配列は入力時の際にはしています。)
(補足1)
言葉足らずで申し訳ありません。具体的には例えばPOSTで
$word = $_POST['word'];
として,何かを検索して
その検索結果を
$string = json_decode($respose);
のようにjson_decodeしてforeachで回しているのですが、
foreach (....) {
このforeach内で$countのようなカウンタ変数を使って件数を数えています。
この状態ですとPCでは正しく表示できていますが、スマートフォンでは0になってしまいます。
ところが、FORMのページとの連携をやめて
$word = $_POST['word'];
のかわりに、
$word = '夏休み';
のようにすると、検索件数はPCとスマートフォン共に正しく表示されますし、
グラフ表示もなされるという意味です。
すなわちFORMとの連携の有無で結果が変わるということです。
JSでのエラーメッセージは出ていないようです。
(補足2)
こんな感じです。
例えばTwitterですと、
$req = $connection->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json', 'GET',
array(
'count'=>$num,
'lang' => 'ja',
'q' => $word1
));
$tweets = json_decode($req); $tw1 = $tweets->statuses; foreach ($tw1 as $val) { .... $count++; .... } echo $count;
のように、個々の検索結果毎にforeachでカウンタ変数回して
検索件数を表示しているのですが、
これがPCは上手くいくけど、スマートフォンでは初期値のままということです。
念のために、
$count = 0;
$count =(int)$count;
して、
foreach内で
$count = (int)($count + 1);
とかもしていますが、
echo $countの結果は同じでPCでは正しい件数、
スマートフォンでは0件です。
(補足3)
PCとスマートフォンも基本的には同じです。
例えばPCでは、
array(1){["word"]=>string(9) "夏祭り"}
のように普通にpostされる値がまとめられています。
スマートフォンの場合ですと、
array(3){["word"]=>string(9) "夏祭り"
["_ga"]=>string() "GA..."
["_octo"]=>string() "GH..." }
のようにクロスドメインのパラメータとCookieのパラメータでしょうか、
そのあたりが付加されるくらいですね。
(自己解決1)
(問題点2)のPCとスマートフォンとの表示の違いについては自己解決しました。
原因は文字コードに起因してました。
そこでフォームのあるページ側でのフォームの出力の文字コードを固定して、
必要に応じてアレンジしたら上手くいきました。
(問題点1)のグラフ描画のjavascriptライブラリの方ですが、
こちらについてはまだです。
どうやら、インクルードするライブラリの順番とか、
文脈にかなり依存しているようです。
(ライブラリの順番については先にjQueryからというのは最初からしてました。)
というわけで、これはもう地道に確認するしかないなということで、
こちらについては継続してやってみます。
お二方をはじめお考えいただいた皆様、どうもありがとうございました。
回答1件
あなたの回答
tips
プレビュー