2017-06-09 18 views
1

firstname、lastname、description、およびimageパスをMySqlデータベースにアップロードしようとしています。アップロードした画像を特定のフォルダに移動します。ここでajaxとphpを使用した画像とデータのアップロード

は私のAJAX機能を使用して、AJAX呼び出しとPHPファイルに直接画像を送信することはできません

formData = new FormData(addPeopleForm); 
var file_data = $('input[type="file"]')[0].file; 
formData.append("file", file_data); 

$.ajax({ 
    type: "POST", 
    url: "functions.php", 
    contentType: false, 
    cache: false, 
    processData: false, 
    data: { 
    function: "savepeople", 
    data: formData 
    }, success: function(data){ 
     console.log(data); 
     getPeople(); 
    } 

}); 

のfunctions.php

if(isset($_POST['function'])){ 
$f = $_POST['function']; 

if($f == "savepeople"){ 
    require_once("config.php"); 
    echo $_POST['firstname']; 
    . 
    . 
    . 
+1

はあなたがFORMDATAで関数の変数を追加しよう#my_formを持っている

$.ajax({ type:'POST', url:'functions.php', data:new FormData($('#my_form')[0]), cache: false, contentType: false, processData: false, success:function(msg) { console.log(msg); } }); return false; 

を試すことができます? –

+0

私はちょうどそれをやって、すべてうまくいった:)ありがとうとにかく:) – Troutfisher

+0

喜んで助けてください:) –

答えて

1

で、フォームdefination

ながら形 enctype="multipart/form-data"を取らなければなりません

このファイルをアップロードすると、ファイルアップロード用に置き換えられます。

コード

formData = new FormData(); //your form name 
var file_data = $('input[type="file"]')[0].file; 
formData.append("file", file_data); 
formData.append("function","savepeople"); // new variable for your php condition 



$.ajax({ 
    url: "YOUR_FILE_PATH", 
    type: "POST", 
    data: formData, 
    contentType: false, 
    cache: false, 
    processData: false, 
    success: function(data) { 
    // success operation here 
    }, 

とPHP側で以下のFORMDATA使用中のファイルを追加するためには、サーバー上でアップロードされたファイルにアクセスするための$_FILES['YOUR_FILE_NAME']の代わり$_POST['YOUR_FILE_NAME']を使用する必要があります。

+0

私はfirstnameをエコーし​​ますか? echo $ _POST ['firstname']? – Troutfisher

+0

はい、あなたは正しいです、あなたは 'echo $ _POST ['firstname'];' –

+0

を使ってファーストネームの値をエコーすることができます。私は関数のPOST値をデータとして渡すことによってajaxを使って特定のPHP関数を呼び出していますが、formdataではこれを行うことができませんので、特定の関数を呼び出す必要はありません。私のPHP関数をもう一度見て、私はちょっと編集してより意味を分かりました。 – Troutfisher

0

あなたはこのコードフォームのID

+0

これは動作しますが、私の場合は、2つの変数をPHPに渡しているため、最初にif文を実行し、2番目にすべてのデータを保持することを決定します。 – Troutfisher

+0

@Troutfisherあなたは2つの変数を渡していますか? –

+0

データ:{ 関数: "savepeople"、 データ:formData }、 – Troutfisher

0
var formData = new FormData($(this)[0]); 
var action = "savepeople"; 

    $.ajax({ 
     url : 'functions.php', 
    type : 'POST', 
    data: {action:action,formData:formData}, 
    contentType: false, 
    cache: false, 
    processData:false, 
    async : false, 
    , success: function(data){ 
console.log(data); 
getPeople(); 
} 
}); 

のfunctions.php

if(isset($_POST['action']) && $_POST['action'] == "savepeople"){ 


    //TO DO CODE 
} 
関連する問題