お世話になります。
WordPressのユーザページ上からajaxを使い画像投稿をさせたいのですが、
画像ファイルを渡そうとするとコケてしまいます。
画像ファイルがちゃんと渡っているか、ajaxのレスポンスで見ようとするのですが、
Object {action: "upload_thumbnail", form: "[object FormData]"}
と返ってきてしまい、どうやら画像ファイルのデータが上手く渡せていないようです。
PHP
1//functions.php 2add_action( 'wp_ajax_upload_thumbnail', 'upload_thumbnail' ); 3add_action( 'wp_ajax_nopriv_upload_thumbnail', 'upload_thumbnail' ); 4function upload_thumbnail() { 5 header( 'Content-Type: application/json; charset=utf-8' ); 6 echo json_encode( $_POST ); 7 exit(); 8}
javascript
1//ユーザページで読み込むjsファイル 2$( 'button' ).on( 'click', function(){ 3 var $file = $( 'input[type=file]' ); 4 var formData = new FormData(); 5 formData.append( $file.attr('name'), $file.prop("files")[0] ); 6 $.ajax( { 7 url: '/wp-admin/admin-ajax.php', 8 type: 'post', 9 data: { 10 action : 'upload_thumbnail', 11 form : formData 12 }, 13 dataType: "json", 14 traditional: true, 15 } ) 16 .then( 17 function ( data ) { 18 console.log( 'done' ); 19 console.log( data ); 20 }, 21 function ( data ) { 22 console.log( 'failed' ); 23 console.log( data ); 24 } 25 ); 26}
まずは、PHPにて$_FILESで受け取るところまで持って行きたいと思っています。
ちなみに、echo json_encode( $_FILES );でデバッグコードを出そうとすると空の配列が返ってくる状況です。
自力で解決しようと、検索しながら試行錯誤してみたのですが上手く行かず・・・
諸先輩方のお知恵を拝借したいのでよろしくお願いいたします。
PHP5.6, jQuery2.1.4, WordPress 4.5.2を使用しています
javascript
1processData: false, 2contentType: false,
上記パラメータはどちらか片方をセットしてもレスポンスが0になり、
恐らくPHP側の処理に入れていない
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/08 06:01