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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

JavaScript

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

Ajax

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

Q&A

解決済

1回答

1897閲覧

CSVファイルをダウンロードするのにprint_rをコメントアウトするとエラーになってしまう

nabex

総合スコア66

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

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

JavaScript

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

Ajax

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

0グッド

0クリップ

投稿2016/07/29 02:46

画面でダウンロードボタンを押してCSVファイルをダウンロードする機能で、downloadCheck関数のprint_r($filename);を残した状態だと正常にファイルをダウンロードできるのですが、
print_r($filename);をコメントアウトするとソース上のE0003のエラーメッセージで「処理が失敗しました」と表示されてしまいます。

E0003のエラーメッセージの処理は3箇所ありますが、どこに入っているのかもわからない状態です。
print_r($filename);を消した状態で正常にcsvファイルをダウンロード出来る状態にしたいのですが、何が原因でどこを修正したらよいでしょうか。

print_rをコメントアウトしただけで正常に動いていたものが動かなくなってしまう理由が見当もつきません。

そもそもソースの書き方が原因なのかどうかだけでも教えていただきたいです。よろしくお願い致します。

lang

1 2<input id="dl_rireki_seqno[0]" class=" prts_btn_m" type="button" 3tabindex="" onclick="click_download_button({'dl_rireki_seqno':'263','dl_rireki_cdate':'20160720'});" 4value="ダウンロード" name="dl_rireki_seqno[0]">

lang

1function click_download_button(obj) 2{ 3 4 //clearShw(); // Confirmウィンドウを閉じる 5 6 var dl_rireki_cdate = obj.dl_rireki_cdate; 7 var dl_rireki_seqno = obj.dl_rireki_seqno; 8 9 var postArray = new Object(); 10 postArray['dl_rireki_cdate'] = dl_rireki_cdate; 11 postArray['dl_rireki_seqno'] = dl_rireki_seqno; 12 13 $("dl_rireki_cdate").value = dl_rireki_cdate; 14 $("dl_rireki_seqno").value = dl_rireki_seqno; 15 16 var postJson = com_toJSONString(postArray); 17 var url = $('base').value; 18 url += '/apedi3u120/DownloadCheck'; 19 20 // Ajaxを呼び出す (同期) 21 var ajax = new Ajax.Request( 22 url, 23 { 24 method : 'post', 25 //postBody : 'json=' + postJson, 26 postBody : 'param=' + postJson, 27 asynchronous : false, 28 onLoading : openLoadingWin(com_getMsg({'msgid':'IZ00005', 29 'msglist':comMsg})), 30 onSuccess : fileExistsSuccess, 31 onFailure : fileExistsFailure, 32 onException : fileExistsException 33 } 34 ); 35}

lang

1public function executeDownloadCheck() 2 { 3 $this->modelobj = new apedi3u120EntryModel($this->comobj); 4 //$json = json_decode($this->req); 5 6 $param = json_decode($this->req['param'], true); 7 $result = $this->modelobj->downloadCheck($this, $param['dl_rireki_seqno'], $param['dl_rireki_cdate']); 8 $this->output = json_encode($result); 9 10 return 'JSON'; 11 }

lang

1public function downloadCheck($actobj, $seqno, $crtdt) { 2 $this->actobj = $actobj; 3 4 $tblDlRirekiObj = new tblDlRirekiModel($this->comobj); 5 6 $param = $tblDlRirekiObj->getDetail( 7 array('dl_rireki_cdate' => $crtdt, 'dl_rireki_seqno' => $seqno), array('file_name', 'dl_kaisu', 'dl_rireki_cdate', 'dl_rireki_seqno', 'gyomu_kbn') 8 ); 9 10 // 業務テーブルから保存パスを取得 11 $gyomKbnObj = new gymModel($this->comobj); 12 $gyomParam = $gyomKbnObj->getDetailData(array('gymux' => $param['gyomu_kbn']), array('rireki_shokai_url')); 13 14 $dirname = DEF_BASE_ROOT_DATADIR . $gyomParam['rireki_shokai_url']; 15 $filename = $dirname . $param['file_name']; 16 print_r($filename); 17 if (!file_exists($filename)) { 18 return false; 19 } 20 21 return $filename; 22 }

lang

1function fileExistsSuccess(httpObj) 2{ 3 var dl_rireki_cdate = $("dl_rireki_cdate").value; 4 var dl_rireki_seqno = $("dl_rireki_seqno").value; 5 6 if(dl_rireki_cdate==0 && dl_rireki_seqno == '' ){ 7 clearShw(); // Confirmウィンドウを閉じる 8 //SHWcfmobj.close(); 9 10 setCfmobjFailure('E0083'); // 対象データがありません。 11 return false; 12 } 13 14 // リターンパラメータチェック 15 var jsonRetVal = httpObj.responseText; 16 17 if(jsonRetVal == NULL){ 18 clearShw(); // Confirmウィンドウを閉じる 19 //SHWcfmobj.close(); 20 21 setCfmobjFailure('E0003'); // 処理が失敗しました 22 return false; 23 }else{ 24 var form = document.forms['form1']; 25// form.module.value = 'apedi3u120'; 26 27// var p_action = "download"; 28// var p_base = '/abl/apedi.php'; 29// var url = p_base + '/apedi3u120/' + p_action + "?dl_rireki_cdate="+dl_rireki_cdate+"&dl_rireki_seqno="+dl_rireki_seqno; 30 31 //window.open(url, '_blank', COMDEF.DEF_WINDOW_OPTIONS); 32 33 form.module.value = "apedi3u120"; 34 form.action.value = "download"; 35 form.submit(); 36 37 clearShw(); // Confirmウィンドウを閉じる 38 //SHWcfmobj.close(); 39 } 40} 41 42function fileExistsFailure(httpObj) { 43 clearShw(); // Confirmウィンドウを閉じる 44 setCfmobjFailure('E0003'); // 処理が失敗しました 45} 46 47function fileExistsException(httpObj) { 48 clearShw(); // Confirmウィンドウを閉じる 49 setCfmobjFailure('E0003'); // 処理が失敗しました 50}

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

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

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

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

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

kei344

2016/07/29 02:49

エラーメッセージはなるべくそのままコードブロックにて追記ください。
nabex

2016/07/29 02:53

すいません、具体的にどのようなことを言われているのかがわかりません。
kei344

2016/07/29 03:03

すいません、読み違いをしていました。無視してください。
kunai

2016/07/29 03:05

url += '/apedi3u120/DownloadCheck';←このPHPでどういうJSONを返そうとしているかがコードがないので確認できませんね。 また、全てのエラーコードが同じなのでエラーの詳細が分からないのであれば、エラーコードを書き換えるか、console.log('fileExistsFailureでエラー');等、コンソールに吐き出してみてはいかがでしょう。
nabex

2016/07/29 04:04

ありがとうございます。ひとまず試してみます。
nabex

2016/07/29 04:49

エラー処理はfileExistsFailure関数の中で行われてることがわかりました。 url += '/apedi3u120/DownloadCheck';←このPHPでどういうJSONを返そうとしているかについてはDownloadCheck関数内で業務テーブルからファイル名とパスをもってきています。
kunai

2016/07/29 04:58

fileExistsFailure(httpObj) の中で、 console.log(httpObj.statusText); など、エラーの詳細を確認してみてください。 恐らくですが、直接的な原因となっているのは提示されている以外のソースコード部分ではないかと思います。 downloadCheck()を呼び出し、その返り値を加工してJSONを返答している箇所のソースコードは出せませんか?
nabex

2016/07/29 05:14

ありがとうございます。 fileExistsFailure関数内でconsole.log(httpObj.statusText);をした結果が以下の内容です。 param {"dl_rireki_cdate":"20160705","dl_rireki_seqno":"259"} ソース param=%7B%22dl_rireki_cdate%22%3A%2220160705%22%2C%22dl_rireki_seqno%22%3A%22259%22%7D downloadCheck()を呼び出し、その返り値を加工してJSONを返答しているソースは3つめにあがっているexecuteDownloadCheckのことでしょうか?
kunai

2016/07/29 05:24

そのstatusTextを見る限り、応答がJSON形式になっていないように見えますよね。 executeDownloadCheck()で$this->outputに格納されたデータはどのように返答されるのでしょうか。 その部分で、単純に$が抜けていたとかそういうレベルの問題が起きている気がします。
nabex

2016/07/29 05:42

JSON形式になっていないのにreturn 'JSON';として返しているからでしょうか。 JSONにする部分はこのような記述になっています。 function json_encode ($value, $options = 0, $depth = 512) {} executeDownloadCheckの$result = $this->modelobj->downloadCheck で呼び出しているdownloadCheckがChekeと先頭のCが大文字になっているのを見つけたので修正しました。 ありがとうございます。
kunai

2016/07/29 05:48

データを返答するところがわからない以上、これ以上の回答は難しいです。。
nabex

2016/07/29 05:56

わかりました。ありがとうございます。あとは自分で見てみます。
guest

回答1

0

自己解決

downloadCheckの部分のreturn $filename;となっている返り値をtrue;に変えたらprint_rをコメントアウトした状態でも正常に動くようになりました。ありがとうございました!

投稿2016/07/29 06:32

nabex

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問