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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

Q&A

解決済

7回答

1335閲覧

javascriptクッキーの処理について

syosinnsyanopuh

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

0グッド

0クリップ

投稿2019/03/27 23:22

編集2019/03/28 14:01

原因が全く分からず困っています。

現在、会員制サイトの作成を勉強しており、テストサイトを作ってます。
ajaxを使用し、phpと非同期通信をして、DBからデータを取得しております。
しかし、ページを開いたまま一定時間経過
(例えば、一度iPhoneでページを開き、ブラウザをセンターボタンで閉じ、再度ブラウザを表示し、更新させる)
すると、更新しても、htmlのみが表示されて、jquery(or ajax or php)の機能が死んでしまいます。

ただし、クエリ文字列でパラメータを渡さないページはきちんと表示されます。

原因が全く分からず、抽象的な質問になってしまい、大変恐縮なのですが、

考えられる理由をご教授いただければ幸いです。

足りない説明で大変申し訳ありません。
いろいろと調査した結果、JSがおかしいのではないかという結論に至りました。
ウェブサイトを参考に、下記のように記述したのですが、evalのところでうまく動きません。
現在{hoge;123}が取得することはできているのですが、
このうち、数字の部分のみを抜き取りたいです。
解決策はない者でしょうか?

js

1 2function readCookie(key){ 3 var result = new Array(); 4 var allcookies = document.cookie; 5 6 if (!allcookies == ''){ 7 var cookies = allcookies.split( '; ' ); 8 for( var i = 0; i < cookies.length; i++ ){ 9 //alert(decodeURIComponent(cookies[i].split('='))); 10 var cookie = cookies[ i ].split( '=' ); 11 if (decodeURIComponent( cookie[ 1 ] ) != "{}"){ 12 result[ cookie[ 0 ] ] = decodeURIComponent( cookie[ 1 ] ); 13 alert(result[cookie[0]]) 14 } 15 } 16 } 17 resultid = eval("("+result[key]+")"); 18 return resultid; 19} 20

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

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

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

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

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

m.ts10806

2019/03/27 23:53

実際のコードやエラー表示をご提示いただかないとアドバイスは難しいかと思われます。
azuapricot

2019/03/28 00:00

原因がまったくわからないのに回答者がコードもなにもなしにわかると思いますか? 文章で説明されたところでこちらとしては「へー。処理が間違ってるんじゃないの?」しか言えません。 コードを提示しましょう。
x_x

2019/03/28 00:28

ログインしていないとデータを返さないようにしていますかね? 原因を特定しましょう。
Lhankor_Mhy

2019/03/28 00:58

補足願います。 「再度ブラウザを表示し、更新させる」とありますが、これはページリロード、という意味でしょうか? もしそうであれば、実際にサーバにリクエストが飛んでレスポンスを返していることが確認できている、つまりキャッシュが悪さしているようなことはないですか?
yoorwm

2019/03/28 01:16

「もしくは」と書かれていますが、全て動いていないケースもありますね。 複数の要因があって、どれが原因か分からない場合は、まずそれぞれに対して「最小限」のアプリを作って個別に確認していくものです。
syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
yoorwm

2019/03/29 01:02

おおぅ。そこまで来たのなら、console.log("("+result[key]+")")として、内容を確認してみるべきですよ
ockeghem

2019/04/01 07:32

入力データの例(Cookieの例)とその場合のreadCookie関数の呼び出し方法例を示してください
guest

回答7

0

おおよそシステムと言うのは、Webであろうと何であろうと様々なものが連動してい動いています。
何か一つがコケれば全てに影響を及ぼします。

今回の場合、「jsもしくはajax もしくはphpが」と書かれていますが、
Ajaxは通信の仕組みですから、JavaScriptによってPHPが呼び出され、PHPから処理結果をJavaScriptで受け取るこの一連の流れが発生していますよね。

また、JavaScriptというのはイベント駆動のプログラミング言語です。
「ページが読まれたら」「ボタンがクリックされたら」など何かしらのイベントがトリガーとなって動きます。

既に幾つも「実際のコードを見せてください」といった指摘が入っているのはその通りで、どのようなイベントが発生しているか分からないのと抽象的なアドバイスすらも実は難しいからです。

おおよそ説明されているのは質問の下記かと思いますが、

現在、会員制サイトの作成を勉強しており、テストサイトを作ってます。

ajaxを使用し、phpと非同期通信をして、DBからデータを取得しております。
しかし、ページを開いたまま一定時間経過
(例えば、一度iPhoneでページを開き、ブラウザをセンターボタンで閉じ、再度ブラウザを表示し、更新させる)
すると、更新しても、htmlのみが表示されて、jquery(or ajax or php)の機能が死んでしまいます。
ただし、クエリ文字列でパラメータを渡さないページはきちんと表示されます。

これでは、JavaScriptが何をトリガーに動作するのか質問者さんしか知りません。なのでコードを見るしかありません。
(おそらくそこまで体系的な理解の上でコードを組んでないとお見受けしましたので)

それに起きている問題は書かれていても「こうなって欲しい」といった想定する動作が書かれていません。
要は仕様ですね。「会員制サイトの作成」だけでは作り方なんて人それぞれ、設計にもよるし、利用しているフレームワークにもよるし、回答に必要なヒントが何一つない状態です。

なので結局「コード・ソースを見せてください」に落ち着きます。

あとは「それぞれの言語に適したやり方で地道にデバッグしてください」「最小構成のコードで試してから肉付けしてください」ですね(どちらも既に回答ついていますが)

投稿2019/03/28 01:28

m.ts10806

総合スコア80850

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

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

syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
guest

0

動く実物を見ないと、結局なんとも言えないと思います。

サーバー側の動作を確認するのに、
webサーバープログラム(apache他)のエラーログやアクセスログを点検する必要があります。

クライアント側(webブラウザ)の動作を確認するのに
開発ツールだのデベロッパーツールだののコンソールなどを点検する必要があります。

そういった箇所を点検して追加で情報を示してもらわないと、
互いに時間の無駄です。

投稿2019/03/28 00:42

編集2019/03/28 01:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
guest

0

抽象的な質問に、抽象的に回答します。
お書きのように、JavaScript(jQuery)か、サーバーサイドがおかしいんでしょう。
現状で考え込まず、原因を切り分ける(絞り込む)ところからやってはどうでしょうか?

投稿2019/03/28 00:25

otn

総合スコア84533

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

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

syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
guest

0

複雑なものをそのままで検証しようとしているので原因がつかめないのでしょう
もう少し機能を絞り何段階かにわけて、どの機能までなら動くかを調査してください

  • 今の機能から一つずつ機能をけずっていく
  • プロトから一つずつ機能を足していく

のいずれかが有効でしょう

cookie処理

一般的なcookie処理はこんな感じ

javascript

1function getCookie(key){ 2 var params = document.cookie.split(/; */); 3 var ret=null; 4 for(var i=0;i<params.length;i++){ 5 if(r=params[i].match(new RegExp("^"+key+"="+"(.*)"))){ 6 ret=r[1]; 7 } 8 } 9 return ret; 10}

keyを指定してそのキーに合致する値を得る
値自体が{hoge:123}だとしたら、オブジェクトならobj.hogeで得られるし
文字列なら更に分解して処理が必要

jQueryが生きているならjquery.cookieライブラリなど利用するともっと楽

投稿2019/03/28 00:23

編集2019/03/29 00:26
yambejp

総合スコア114825

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

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

syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
guest

0

現状の情報では
期限つきCookieの期限が切れたのでは?
ということしかわかりません。

投稿2019/03/29 00:39

x_x

総合スコア13749

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

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

0

その漠然とした質問に対して、漠然としたアドバイスを
そのhtmlをChromeのコンソールで表示させてみてください。

エラー表示されていると、程度にもよりますがjavascriptは全く動かなくなります。

もう一つ考えられるのは、画面遷移時に制御されるようになっていても、リロード時には制御されるようになっていないプログラムが構築されていることです。

結局、ソースを見ないと推理しかできませんが。

投稿2019/03/28 00:52

FKM

総合スコア3633

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

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

syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
syosinnsyanopuh

2019/03/28 14:02

説明を追加しました。足らずが多く、大変申し訳ございませんでした。
guest

0

自己解決

解決いたしました。
クッキーを格納する際の連想配列のスペルミスでした。
ご迷惑をおかけしました。

投稿2019/04/01 02:15

syosinnsyanopuh

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問