GattsCOM

ブログ

BLOG

  1. Home
  2. Blog
  3. #jQuery

Ajax LaravelやPHPでファイル保存する時Base64とかでよく忘れちゃうこと

こんちわ〜久しぶりにプログラム書いてると、久しぶりじゃなくてもよく忘れちゃうbase64の保存方法Ajaxで非同期通信してて、Laravel側(PHP)にファイルデータ渡して保存してるけど、保存したファイルが開けません問題Storage::put('ファイル名', $data);// PHPプレーンに書くならfile_put_contents('ファイル名', base64_decode($data));作ったファイルをダウンロードして、見てみるとファイルは開けません!って怒られるあれれ?って思ってあ〜そうだった。base64_decodeしてねぇや。Storage::put('ファイル名', base64_decode($data));// PHPプレーンに書くならfile_put_contents('ファイル名', base64_decode($data));ダウンロードして・・・ファイルは開けまてん!!あれぇぇえぇ〜?ってなること良くあるある。送信したファイルについてる下の呪文を取り除くのよく忘れる。data:application/pdf;base64,data:image/png;base64,ってことで、よく忘れるのはこのファイルの先頭についてる呪文を削除してからbase64_decodeして保存しないとダメってことですよね。ちゅーことで〜今回はPDFとして〜$str_rep = 'data:application/pdf;base64,';$data = base64_decode(str_replace($str_rep, '', $image_data));Storage::put($file_name.'.pdf', $data);ふぅ〜無事ダウンロードして開けました。まじで、久々に書いてたら忘れること多いなぁ・・・・

jQueryで要素を追加した時の挙動と反応と対処

よく忘れちゃうから、備忘録に書いておく。jQueryでボタン等、要素を追加した時に追加したボタンにも同じfuncitonを適応したい場合の書き方。※ $(document).ready();は最初に読み込まれた時、その場にある要素にしか対応していない。例えば、btnと言うclass名のボタンを押したら同じclass名のボタンが押せば押すほど増えるしかし、最初に読み込まれた最初のclass名btnのみしかclickアクションは反応しない。例を書く ボタン$(document).ready(function(e){ $('.btn').on('click', function(){ //btnを押された時の処理(押せば押すほど「追加ボタン」が増えていく) $('#btn_area').append('追加ボタン'); });});こういったコードだと、最初に表示されたclass名btnにしか反応しない。「追加ボタン」もclass名はbtnだが、このfunctionは反応しない。じゃぁ、よく忘れるこの場合の対処法。$(document).ready(function(e){ //↓この行だけ変わってるよ! $('#btn_area').on('click', '.btn', function(){ //btnを押された時の処理(押せば押すほど「追加ボタン」が増えていく) $('#btn_area').append('追加ボタン'); });});$('#btn_area').on('click', '.btn', function(){});これは、簡単に書くと$('#btn_area')の子要素(.btn)を指定して反応させるってこと。見てる限りの処理としては、$('#btn_area')内が押された時に、この親要素の中にある子要素をもう一度見見直すんでしょう。んで、selectorとして指定してる(.btn)を見ると増えてるから、こいつらも同じ処理をさせるって感じでしょうな。この書き方よく使うのに、よく忘れるんですよね〜

jQuery UIのAutocompleteを使ってみる

記事をもっと見る