PHPおよびjQueryの勉強のため、Ajax通信を用いて画像ファイルのアップロードを行うファイルとして以下のソースのhtml・phpファイルを作成しました。しかし、Ajax通信が上手くできていないようで、ソースコード中の.fail(function(jqXHR, textStatus, errorThrown)が呼び出され、コンソールに以下のように表示されます。
fail [object File] 200 parsererror SyntaxError: Unexpected token < in JSON at position 0
送信もしくは受信するJSONファイルの内容に問題があるということだと思いますが、具体的な原因が分かりません。
console.log(fd.get("upfile"));では、コンソールに以下のように表示されます。
File {name: "xxx.jpg", lastModified: 1468386651618, lastModifiedDate: ...(以下省略)}
どなたかご教授いただけるとありがたいです。
###ソースコード
ファイル送信側のHTMLファイル:
HTML
1<meta charset="utf-8"> 2<script type="text/javascript" language="javascript" src="jquery/jquery-3.1.0.min.js"></script> 3 4<script type="text/javascript"> 5 if(window.FormData){ 6 console.log("FormDataに対応している"); 7 }else{ 8 console.log("FormDataに対応していない"); 9 } 10 11 jQuery(function(){ 12 jQuery("#file_upload_form").submit(function(){ 13 var fd = new FormData(document.getElementById("file_upload_form")); 14 console.log(fd.get("upfile")); 15 jQuery.ajax({ 16 url: "uploader.php", 17 type: "POST", 18 data: fd, 19 cache: false, 20 processData: false, 21 contenttype: false, 22 dataType: 'json' 23 }) 24 .done(function(data, textStatus, jqXHR){ 25 console.log("success " + data); 26 alert(data); 27 }) 28 .fail(function(jqXHR, textStatus, errorThrown){ 29 console.log("fail " + fd.get("upfile") + " " + jqXHR.status+ " " + textStatus+ " " + errorThrown); 30 alert("fail"); 31 }); 32 return false; 33 }); 34 }); 35</script> 36 37<form id = "file_upload_form" enctype="multipart/form-data" method="post" name="file_upload_form"> 38 ファイル: 39 <input type="file" name="upfile" id="upfile"> 40 <input type="submit" value="アップロードする" id="upload_file_button"> 41</form>
ファイルを受信し、アップロードするPHPファイル(uploader.php):
PHP
1<?php 2 header('Content-Type: application/json; charset=utf-8');//JSON形式で出力する 3 $updir = "./upload/"; 4 $filename = $_FILES['upfile']['name']; 5 if(move_uploaded_file($_FILES['upfile']['tmp_name'],$updir.$filename)==FALSE) 6 { 7 print("Upload failed"); 8 print($_FILES['upfille']['error']); 9 } 10 else{ 11 print("<b>" .$filename ."</b> uploaded"); 12 $json = json_decode($filename); 13 echo json_encode($json); 14 } 15?>

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/21 05:37 編集
2016/09/21 05:52
2016/09/21 06:24 編集