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

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

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

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

PHP

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

JavaScript

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

jQuery

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

Q&A

解決済

2回答

513閲覧

jQueryのデータPOST処理がローカル環境以外でエラーになってしまいます

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

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

PHP

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/04/11 15:37

編集2018/04/12 02:53

【わからないこと】
jQueryで別ページのPHPに変数を渡しMySQLにデータを格納しています。

ローカル環境ではエラーが出ずに動作しているのですが、サーバー環境(Xサーバー)にデータを移動させテストしたところ下記のエラーが出ました。

Parse error: Invalid numeric literal in /home/richnaru/dietdietdiet.net/public_html/dm_into.php on line 256

「dm_into.php」は、変数を受け取る側のPHPファイルです。
下記は、データを投げるのjQueryです。postで変数を渡しています。

エラーがでなければ、結果がコールバック表示されます。

【dm_php(jQuery記述側のPHPファイル)】

<div id="dm_input"> <input id="num" type="text" size="3" value="" /> <div id="slider" style="width:300px;"></div> <form id="textmemo_form"> <textarea id="textmemo" type="text" name="textmemo" rows="5" value=""</textarea> </form> <input class="submit_button" id="dm_botton" type="button" name="ok" value="OK" /> </div> <!-- カレンダーjQuery --> <p><input type="text" id="datepicker" placeholder="日付指定" value="" name="datepicker"></p> <p><input id="timepicker1" type="text" placeholder="時刻指定" name="timepicker1"/></p> <p>&nbsp;</p> <!-- カレンダーjQuery END-->

【jQuery】

<script type="text/javascript"> jQuery(function () { $('#dm_botton').click(function() { $.post('dm_into.php',{ dm_score: $('#num').val(), textmemo: $('#textmemo').val(), datepicker: $('#datepicker').val(), timepicker1: $('#timepicker1').val() }, function(data){ $('#dm_input').html(data); }); }); }); </script> ``` 【db_into.php】 --- ```ここに言語を入力 if(isset($_POST['dm_score'])){ $dm_score = $_POST['dm_score']; if(isset($_POST['textmemo'])){ $textmemo = $_POST['textmemo']; } // タイムシフト投稿処理 if(isset($_POST['datepicker']) OR isset($_POST['timepicker1'])){ $datepicker = $_POST['datepicker'];//日付指定 $datepicker = str_replace("/", "-", $datepicker);//文字置換 $timepicker1 = $_POST['timepicker1'];//日付指定 //時刻文字(AM、PM)のトリミング $cut = 3;//カットしたい文字数 $str=$timepicker1; $replace = substr( $str , 0 , strlen($str)-$cut ); //echo "<p class='red'>timepickerトリム後時刻=".$replace."</p>"; $target_day=$datepicker.$replace; //PMの場合12時間加算する if(strpos($timepicker1,'PM') !== false){ //'PM'が含まれている場合 12時間加算する //12時間後にする //echo "<p class='red'>PMのため12時間追加</p>";//D //echo "<p class='red'>replace=".$replace."</p>";//D $replece_time1 =mb_substr($replace, 0, 2); echo "<p class='red'>replece_time1=".$replece_time1."</p>"; var_dump($replece_time1); if($replece_time1==01){ $replece_time1="13"; } else if($replece_time1==02){ $replece_time1="14"; } else if($replece_time1==03){ $replece_time1="15"; } else if($replece_time1==04){ $replece_time1="16"; } else if($replece_time1==05){ $replece_time1="17"; } else if($replece_time1==06){ $replece_time1="18"; } else if($replece_time1==07){ $replece_time1="19"; } else if($replece_time1==08){ $replece_time1="20"; } else if($replece_time1==09){ $replece_time1="21"; } else if($replece_time1==10){ $replece_time1="22"; } else if($replece_time1==11){ $replece_time1="23"; } else if($replece_time1==12){ $replece_time1="24"; } $replece_time2 =mb_substr($replace, 3, 2); $replace=$replece_time1.":".$replece_time2;//再度時刻を合成 $target_day=$datepicker.$replace; } //時刻形式に整形します $target_day= date("Y-m-d H:i:s",strtotime($target_day . "+0 hour")); //完成した時刻配列の表示 //echo "<p class='red'>完成時刻配列表示".$target_day."</p>";//D //指定時刻が未来の場合処理を実行しないようにする $date_time1 = new DateTime();//現在時刻 $date_time2 = new DateTime($target_day);//指定時刻 if ($date_time1 < $date_time2){ echo '<p class="red">※ 指定日時が未来です。「現在時刻」で投稿します</p>'; } elseif($target_day < $_SESSION['start_date']){ //指定時刻が登録日の前なら現在時刻を投稿すyる // $_SESSION['start_date'] //D 登録日の年月日+時刻のデータ echo '<p class="red">※ 指定日時が登録日前です。「現在時刻」で投稿します</p>'; } else{ //タイムシフト時刻を代入 $date=$target_day; } }// if(isset($_POST['datepicker']) OR isset($_POST['timepicker1'])){ //echo "<p class='red'>$_SESSION[start_date]".$_SESSION['start_date']."</p>";//D 登録日の年月日+時刻のデータ //テキスト(DMツイート)を150文字でトリミングします $textmemo = mb_strimwidth($textmemo, 0, 300, '…', 'UTF-8'); //上記変数をDBに格納する処理 ``` 【追記】 --- dm_into.phpの256行目がエラーと出てるのですが、他のjQueryで変数を渡しても同じエラーメッセージがでます。 256行目の変数は $replece_time1 です。この直前の文字列(jQueryのPOSTで受け取ったデータをトリミングしたもの)がエラーの原因の可能性があります。 ローカル環境(PHP5)ではエラーがでません。 サーバー側(PHP7)でのみ上記のエラーメッセージがでてしまいます。 --- サーバーのPHPバージョンが7、ローカル5.68で、PHPバージョン7以上にするとエラーになり、サーバーのバージョンを5に下げるとエラーがでません。 PHP5とPHP7との互換性の問題があるようです。 現在、ローカルのバージョンをサーバー側に合わせる作業を進めております。 投稿内容に不備があり本日追記させていただきました。ご指摘頂いたのに正しく対応できず心よりお詫び申し上げます。 修正対応できる点などありましたらご指摘いただけるとありがたいです。 現在ローカルがPHP5のままで、PHP7に変更中ですがこちらは少々時間がかかります点のみご了承ください。 【エラー該当個所】 replece_time1で変数に0を先頭に付けた数字を使っていたのが原因だとご回答いただきました。 下記はvar_dumpでの出力です。 replece_time1(var_dump)= string(2) "11" PHP5では0が先頭になる数字がエラーにならず、PHP7ではエラーになることが原因でした。 質問に不備がありみなさまに不快な思いをさせてしまったことをお詫び申し上げます。 また、わかりにくい質問に対しご回答いただきましたみなさまに心からお礼申し上げます。 誠にありがとうございました。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/04/11 15:53 編集

PHPのバージョンが異なっているようなので、ローカルのPHPバージョンを本番環境と同一のものにしてください。おそらく本番環境の方がPHPのバージョンが上になっているはずです。
退会済みユーザー

退会済みユーザー

2018/04/11 16:00

ありがとうございます。サーバーのPHPバージョンが7、ローカル5.68です。ローカル側を7にし合わせます。7にした場合にjQueryの記述にエラーがあるのでしょうか?困りました
退会済みユーザー

退会済みユーザー

2018/04/11 16:01

エラーメッセージを出しているページに間違いがあります。
退会済みユーザー

退会済みユーザー

2018/04/11 16:05

どこが悪いのかわかりません。すみません。
退会済みユーザー

退会済みユーザー

2018/04/11 16:23 編集

??? 別に謝る必要はないと思いますが。
退会済みユーザー

退会済みユーザー

2018/04/11 16:38

ありがとうございます。反映させていただきました。
退会済みユーザー

退会済みユーザー

2018/04/11 16:40

dm_into.php を提示せずに何をしているんですか?
退会済みユーザー

退会済みユーザー

2018/04/12 02:23

投稿内容に不備がありご指摘頂いたのに即座に対応できずお詫び申し上げます。修正し投稿いたしますので少々お時間ください。
guest

回答2

0

ベストアンサー

dm_into.phpの256行目で発生したパースエラーの原因となった変数をvar_dump等で値を出力してみてください。

投稿2018/04/12 01:49

shu_otsuka

総合スコア59

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

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

退会済みユーザー

退会済みユーザー

2018/04/12 02:23

承知いたしました。 再度、投稿いたしますので少々お時間ください。
shu_otsuka

2018/04/12 02:36

if($replece_time1==01){ の01をシングルクォートで囲めば、解決ではないでしょうか。  ※else if内も同様 <例> if($replece_time1=='01'){
退会済みユーザー

退会済みユーザー

2018/04/12 02:48

ご回答いただいた個所でエラーになっていました。 var_dump の結果も記載しておきますね。 replece_time1(var_dump)= string(2) "11" 本当に助かりました。心からありがとうございました。
guest

0

状況がややわかりにくいですが、こちらにあるように
phpでは数値の先頭に0をつけると8進数になりますが、その際
8進数の整数値として不正な数字(例: 8 または 9)が指定されたとき
php5までは適当に無視してくれたものがphp7ではパースエラーになります。

  • 8進数010は10進数8
  • 8進数08はphp5では0、PHP7ではエラー

その手の誤表記をされている可能性はあります
(たとえばswitchで文字列をしていするところを8進数表記にしてしまったとか)

投稿2018/04/12 00:42

編集2018/04/12 02:20
yambejp

総合スコア114572

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

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

退会済みユーザー

退会済みユーザー

2018/04/12 02:22

とてもわかりやすくありがとうございます。 変数を受け取ったファイルの側で教えていただいたPHP7とPHP5との違いでエラーになっているようですね。ローカル環境をPHP7に上げて試行錯誤してみます。質問内容も修正加筆してみます。 わかりにくくなってしまっているのに丁寧に教えていただいて感謝です。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問