2016-11-17 10 views
2

私はいくつかの質問を読んでいますが、何も助けてくれません。jQueryからPHPに画像を送る - FormDataは毎回空です。

私は、通常のHTMLフォームをしました:

<form id="featured_upload" method="post" action="#" enctype="multipart/form-data"> 
    <input type="file" name="my_image_upload" id="my_image_upload" multiple="false" /> 
    <input type="hidden" name="post_id" id="post_id" value="<?php echo get_the_ID(); ?>" /> 
    <?php wp_nonce_field('my_image_upload', 'my_image_upload_nonce'); ?> 
    <div class="button-reg-box"> 
    <button type="submit" class="btn btn-primary btn-set-picture">Profilbild bearbeiten</button> 
    </div> 
</form> 

これは私のjQueryの関数である:

jQuery('#featured_upload').submit(function (e) { 
    e.preventDefault(); 
    SetAndChangePicture(); 
}); 

function SetAndChangePicture() { 
    var test = new FormData(this); <-- empty :(
    console.log(test); 
    jQuery.ajax({ 
     type: "POST", 
     async: false, 
     url: dmd_output_favorites_obj.ajax_url, 
     data: { 
      action: "dmd_picture", 
      formdata: new FormData() <-- empty too but I want to test above 
     }, 
     success: function (data) { 
      //jQuery('#MemberAreaChangeInterests .alert-success').show(); 
     } 
    }); 
} 

このvar test = new FormData(this);は毎回空です。

私はthisとフォームのjQueryセレクタを試しました。両方とも動作していません。

EDIT:コンソールで

エラー:

Uncaught TypeError: Illegal invocation

編集:ここでは

は私のデバッグの写真です:

enter image description here

答えて

0

この

をお試しください3210
var formData = $('#featured_upload').serialize(); 

これはあなたにフォームの詳細を与える

+0

それはまだ空です。 – cgee

0

次のことを試してみてください。

にアクション

<input type="hidden" name="action" id="post_id" value="dmd_picture" /> 

変更データに隠された入力タイプを追加します。

data: new FormData(jQuery('#featured_upload')[0]); 

次のajaxプロパティを使用してください。

contentType: false, 
processData: false, 

注:async:falseを使用しないでください。

+0

まだ空で、この新しいエラーが表示されます。 Uncaught TypeError:k.toLowerCaseは関数ではありません – cgee

+0

FormDataは引数を正しく受け入れませんか? https://developer.mozilla.org/en-US/docs/Web/API/FormData –

+0

何が空ですか?あなたはどのように空であることが分かりますか? – madalinivascu

1

は、コードに続いて試してみてください:jQueryを使って

var formData = new FormData(); 
formData.append('image', $('input[type=file]')[0].files[0]); 

フォームを送信

Ajaxリクエストは次のようになります:

$.ajax({ 
    url: 'Your url here', 
    data: formData, 
    type: 'POST', 
    contentType: false, 
    processData: false, 
    //...Other options like success and etc 
}) 
+0

私はvar formDataをデバッグしますが、このvarはまだ空です。 – cgee

+0

@cgeeはそこにSetAndChangePictureペーストコードを削除してみるべきです –

関連する問題