2016-08-23 7 views
3

ファイルデータをいくつかの通常のデータ、つまりajax呼び出しでフォームなしで追加するにはどうすればよいですか?私は私のAJAXのスクリプトを持っている 電流がFormDataを使用せずにajax呼び出しでファイルデータを追加する方法は?

$("body").on("click", "#next-step", function(event){ 
       $("#loader").show(); 
       event.preventDefault();    

       var file = $("#upload_logo")[0].files[0]; 
       $.ajax({ 
        type: 'POST', 
        url: 'step-two.php', 
        data:{ 
         name : "my name", 
        }, 
        file : {upload_logo : file}, 
        contentType: false, 
        processData: false, 
        success: function(response) 
        { 
         $("#loader").hide(); 
         alert(response); 

        } 
       }) 


    }); 

私は解決策を見つけたが、それは私はそれが

event.preventDefault(); 
       var fdata = new FormData() 


       if($("#upload_logo")[0].files.length>0) 
        fdata.append("upload_logo",$("#upload_logo")[0].files[0]) 

       $.ajax({ 
        type: 'POST', 
        url: 'step-two.php', 
        data:{fdata}, 

を働きたい方法ではありませんそして、それは動作しますが、私の質問は、どのような場合、私はちょうどですどのように私はこれを行うことができますデータ内のファイルを追加したいですか?代わりにFormData()を使用する代わりに?

+2

?それはファイルアップロードの受け入れられた方法です。他の何かをすることは、古い技術を使用している。 –

+0

あなたは正しいです、私は知りたいのは、単にデータフィールドに通常の入力フィールドを追加するのと同じように、ファイルフィールドを追加することができないということですか?なぜなら、私は最初のコードファイル({upload_logo:file})と同じようにどこでも見つけることができないからです。 –

+1

はい、POST要求の一部としてファイル内のデータを転送するには、FormDataを使用する必要があります。データをファイルの内容と混在させることもできます。データ:{名前: '私の名前'、fileContent:fdata} –

答えて

-2
Use Form data 

var formData = new FormData('form id'); 
    $.ajax({ 
type: 'post', 
async: false, 
cache: false, 
url: '', 
contentType: false, 
processData: false, 
data: formData, 
dataType: 'json', 
success: function (response) { 

    } 
}); 
+0

フォームはありません。入力フィールドがあり、私の質問はどのようになっていますか? FormData()を使用せずにこれを行うことができますか? –

+0

しかし、あなたはクリックハンドラを持っているので、その特定のクリックについてリクエストしないでください。 – khaliq

+0

これはあなたのウェブページにhtml形式で何もない。ファイルの内容を入力タイプ= "ファイル"から取得するjavascriptのもう1つのオブジェクトです。 –

0

ajaxでファイルをアップロードすることはできません。 IFrameを使用して、ページを更新せずにファイルをアップロードすることができます。さらに詳細を確認できますhere

AJAXによるファイルアップロードがサポートされています。例えば。 FormDataオブジェクトを使用していますが、残念ながら、すべての/古い ブラウザではサポートされていません。

FormDataのサポートは、デスクトップの次のバージョンから開始されます。 IE 10+は、Firefox 4.0以降、クロム7+、サファリ5+、オペラ12+詳細については

、 `FORMDATA()`使用と間違っている何see MDN link

関連する問題