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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

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

Q&A

1回答

1191閲覧

Ajaxで非同期通信のデータの受け渡しをしたい

j-nagnn

総合スコア21

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

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

0グッド

1クリップ

投稿2020/09/11 07:10

編集2020/09/16 05:24

Ajaxをつかって、PHP側にファイルのフルパスやファイル名などの情報を送りたいです。
ですが、下記の参考サイトを手本にやってみても、Ajaxの'data'に記述した情報がPHP側で受け取ってくれませんでした。

[参考サイト]
Ajaxでファイルをアップロード
PHP×jQuery(JS)×JSONでデータの送受信
比べてみてもid名やurl以外の違いはみつけられませんでした。
分かる方、改善策があるのか教えてほしいです。

[mst.html]

html

1<h1>一覧画面</h1> 2 <br> 3 <?php 4 echo $this->Form->create(false, array('type' => 'file','id'=>"my_form")); 5 echo $this->Form->input('CsvFile', array('type' => 'file','class'=>'insrtcsv','id'=>'fup','accept'=>'text/csv')); 6 echo $this->Form->submit('インポート',array('class'=>'newcsv','onclick'=> "file_upload()")); 7 echo $this->Form->end() ; 8 ?> 9

[list.js]

javascript

1 //ファイルのアップロード 2function file_upload() 3{ 4 // フォームデータを取得 5 var formdata = new FormData($('#my_form')[0]);//クラスのインデックス0番目 6 var send_data = {"f":formdata,"m":"成功しました。"} 7 8 // POSTでアップロード 9 $.ajax({ 10 url:'/Bank/csv_insert', 11 async: true, 12 type: "POST", 13 cache: false, 14 processData: false, 15 contentType: false, 16 data:send_data, 17 dataType : "json" 18 }) 19 .done(function(data, textStatus, jqXHR){ 20 alert(data); 21 }) 22 .fail(function(jqXHR, textStatus, errorThrown){ 23 console.log("jqXHR : " + jqXHR.status); // HTTPステータスが取得 24 console.log("textStatus : " + textStatus); // タイムアウト、パースエラー 25 console.log("errorThrown : " + errorThrown.message); // 例外情報 26 }); 27} 28

[ListController.php]

php

1 public function csv_insert() { 2 try { 3$MM = "読み込めない"; 4 //ファイルの読み込み 5 if($this->request->is('ajax')){ 6 $f = $this->request->data['CsvFile']['f']; 7 $MM = $this->request->data['CsvFile']['m'];//一時保存ファイル名 8 } 9 $file_name = $f['name'];//ファイル名 10 $file_tmp = $f['tmp_name'] 11 $ckdir = realpath(TMP."/upcsv")."/".$file_name;//サーバアップロード用 12 move_uploaded_file($file_tmp, $ckdir); 13 14 15 return json_encode($MM); 16 17 } catch (Exception $ex) { 18 $this->log($ex, 'error'); 19 } 20 }

フレームワーク:cakePHP2.10
開発環境:NetBeans
ブラウザ:GogleChrome

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/09/11 07:21

クライアント側の問題なのか、サーバー側の問題なのか切り分けてください。
j-nagnn

2020/09/11 07:23

恐らくクライアント側なのかなと思います。 だから、クライアント側をサーバー側でやり取りが行えないのでしょうか?
退会済みユーザー

退会済みユーザー

2020/09/11 07:30

「恐らく」「思います」というイイカゲンな話ではなく、Fiddler などのキャプチャツールを使ってきちんと切り分けてください。要求が期待通り出ているか、内容は OK か、サーバー側からの応答は返ってきているか、それは期待通りかは少なくともわかるはず。ちゃんと調べてください。それができるのは質問者さんだけです。
j-nagnn

2020/09/11 07:37

xdebugを使っているのですが、サーバー側からの応答は来ていません。
退会済みユーザー

退会済みユーザー

2020/09/11 07:50

Fiddler などのキャプチャツールを使ってきちんと切り分けてください。要求が期待通り出ているか、内容は OK か、サーバー側からの応答は返ってきているか、それは期待通りかは少なくともわかるはず・・・はやらないという返事ですか?
j-nagnn

2020/09/11 08:00

やらないという返事です。やらないと分からないものなんですね。
退会済みユーザー

退会済みユーザー

2020/09/11 14:50

> やらないという返事です。やらないと分からないものなんですね。 切り分けすらできないのにそんな偉そうなことは言わないでほしいね
guest

回答1

0

とりあえずsubmitの回避していませんよね?
'onclick'=>"file_upload();return false"
的な処理が必要かもしれません。
(生のHTMLで書いてください)

投稿2020/09/11 08:53

yambejp

総合スコア114839

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

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

j-nagnn

2020/09/11 09:30

<button type="submit" class="newcsv" onclick="file_upload(); return false">データインポート</button> という感じでしょうか?
yambejp

2020/09/11 09:57

そうですね、とりかくsubmit機能を殺すところからやらないと 非同期処理ができません
yambejp

2020/09/11 10:47 編集

普通にやればこうなります <script> window.addEventListener('DOMContentLoaded', ()=>{ const fup=document.querySelector('#fup'); fup.addEventListener('submit',e=>{ e.preventDefault(); var body = new FormData(fup); var method ="post"; var url="hoge.php"; fetch(url,{method,body}).then(res=>res.text()).then(console.log); }); }); </script> <form id='fup' method='post' enctype="multipart/form-data" action="hoge.php";> <input type='file' name='csvF' class='insrtcsv' accept='.csv'> <input type='submit' class='newcsv'> </form>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問