やりたいこと
ajaxのsuccess時現在
画像プレビュー・テキストエリア・削除ボタンを作成し、表示しています。
ここの処理に
selectboxのプルダウンを作成したいです。
ajaxにてselectboxを作るというのはわからなかったので質問させていただきました。
疑問点
現在phpの変数にてoptionを$channel_list持っているのですが
ajaxで作成するにあたり$channel_listの中身を使うことは可能でしょうか?
現在のコード
js
1success: function(imageData, status, xhr) { 2 var res = {}; 3 try { 4 res = $.parseJSON(xhr.responseText); 5 }catch (e) {} 6 $("#image-files ul").append("<img class='imgView' src=\"" + res.img + "\" data-imgid=\"" + res.img_id + "\"/ >"); 7 8 $('<input>').attr({ 9 type: 'textarea', 10 name: "body["+res.img_id+"]", 11 value: "", 12 size: 30, 13 maxlength: 140, 14 "data-imgid": res.img_id 15 }).appendTo("#image-files div"); 16 $('<input>').attr({ 17 "class" : "deleteBtn", 18 type: "button", 19 name: res.img_id, 20 value: "削除", 21 "data-imgid": res.img_id 22 }).appendTo("#image-files div"); 23} 24
追記
js
1 $(".uploadFile").change(function() { 2 // ファイル分タスクを作成 3 $.each(this.files, function(i, file){ 4 promise = promise.pipe(function(response){ 5 6 var newPromise = $.Deferred(); 7 var formData = new FormData(); 8 9 formData.enctype = "multipart/form-data"; 10 formData.append("file", file); 11 $("#progress-container").append(progressTemplate); 12 $.ajax({ 13 url: "/hogehoge/add", 14 type: 'POST', 15 dataType: 'text', 16 data: formData, 17 cache: false, 18 contentType: false, 19 processData: false, 20 xhr: function() { 21 var xhr = $.ajaxSettings.xhr(); 22 if (xhr.upload) { 23 $('#submitBtn').attr('disabled', 'disabled'); 24 xhr.upload.addEventListener('progress', function(evt) { 25 var percent = (evt.loaded / evt.total) * 100; 26 $("#progress-container").find(".progress-bar").width(percent + "%"); 27 28 }, false); 29 } 30 return xhr; 31 }, 32 success: function(imageData, status, xhr) { 33 var res = {}; 34 try { 35 res = $.parseJSON(xhr.responseText); 36 }catch (e) {} 37 $("#image-files ul").append("<img class='imgView' src=\"" + res.img + "\" data-imgid=\"" + res.img_id + "\"/ >"); 38 $('<input>').attr({ 39 type: 'textarea', 40 name: "body["+res.img_id+"]", 41 value: "", 42 size: 30, 43 maxlength: 140, 44 "data-imgid": res.img_id 45 }).appendTo("#image-files div"); 46 $('<input>').attr({ 47 "class" : "deleteBtn", 48 type: "button", 49 name: res.img_id, 50 value: "削除", 51 "data-imgid": res.img_id 52 }).appendTo("#image-files div"); 53 $('#submitBtn').removeAttr('disabled'); 54 if ($("#image-files ul img").length > 10){ 55 $('#submitBtn').prop('disabled', true); 56 } 57 }, 58 error: function(xhr, textStatus, errorThrown) { 59 var res = {}; 60 try { 61 res = $.parseJSON(xhr.responseText); 62 } catch (e) {} 63 alert(res.errorMessage); 64 $('#submitBtn').attr('disabled', 'disabled'); 65 }, 66 complete: function() { 67 $("#progress-container").children().remove(); 68 newPromise.resolve(); 69 } 70 }); 71 return newPromise; 72 }); 73 }); 74 def.resolve(); 75 });
php
1コントーローラー 2 3 4if (isset($_FILES['file']['error']) && is_int($_FILES['file']['error'])) { 5 try 6 { 7 8 switch ($_FILES['file']['error']) { 9 case UPLOAD_ERR_OK: 10 break; 11 case UPLOAD_ERR_NO_FILE: 12 throw new RuntimeException('ファイルが選択されていません'); 13 case UPLOAD_ERR_INI_SIZE: 14 case UPLOAD_ERR_FORM_SIZE: 15 throw new RuntimeException('ファイルサイズが大きすぎます'); 16 default: 17 throw new RuntimeException('その他のエラーが発生しました'); 18 } 19 20 // MIMEタイプチェック 21 $mimeTypeCode = @exif_imagetype($_FILES['file']['tmp_name']); 22 if (!in_array($mimeTypeCode, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG), true)) { 23 throw new RuntimeException('画像でないファイル、又は未対応の画像形式です'); 24 } 25 26 27 // 作成したサムネイルデータを取得してbase64エンコード 28 $imageFile = @base64_encode(@file_get_contents($_FILES['file']['tmp_name'])); 29 $mimeTypeStr = @image_type_to_mime_type($mimeTypeCode); 30 31 if ($imageFile && $mimeTypeStr) { 32 33 // 画像を出力 34 $json = array(); 35 $json['img'] = "data:" . $mimeTypeStr . ";base64," . $imageFile; 36 $json['img_id'] = $piy_post->img_id; 37 38 // 画像を出力 39 echo json_encode($json,JSON_UNESCAPED_UNICODE); 40 } 41 } else { 42 // 作成したサムネイルが見つからない、MIMEタイプが取れていない際のエラー 43 throw new RuntimeException('画像表示前になんらかのエラーが発生しました'); 44 } 45 46 } 47 catch (RuntimeException $e) 48 { 49 50 // レスポンスにエラー情報をセットする 51 header('HTTP', true, 400); // bad requestを返すことにする 52 53 $json = array(); 54 $json['errorMessage'] = $e->getMessage(); 55 echo json_encode($json,JSON_UNESCAPED_UNICODE); 56 exit; 57 } 58 } 59 exit; 60 }
回答2件
あなたの回答
tips
プレビュー