2012-03-02 12 views
1

ファイル入力フィールドがAJAX経由で動的に挿入されるフォームがあります。基本的に私がやっていることは、フォームを表示することです、ユーザーは彼らが望むテンプレートを選びます、そして、彼らは彼らが選んだテンプレートに応じていくつかの余分なフォームフィールドを引っ張ります。そのうちの1つにファイル入力があります。問題は、追加されたファイル入力でフォームを送信するときにPHP $ _FILES配列が私にエラーコード4を与えていることです。つまり、ファイルがアップロードされていませんでした。これらのファイルをアップロードするために何をする必要があるのか​​誰にでも分かりますか?Chromeの問題 - AJAX挿入ファイル入力ファイルがアップロードされない

私は、私が送信しているフォームフィールドを再評価するためにJS側で何かをしなければならないと思っていますが、何かを見つけることができませんでした。 (そしてフォームに正しいenctypeを使用しています)

更新:これはSafari/Chromeでのみ発生します。私は、これがWebkitブラウザのセキュリティ機能だと思っています。このための修正があるかどうか私にはわからない...

おかげで、すべての

+0

更新:これはChromeでのみ発生しています。 IE/Firefoxでは、URLが正しくPOSTされていることがわかります。 – efru

答えて

0

あなたがform.submit()メソッドを介してフォームを送信する場合、ファイルを送信して問題はないはずです。あなたはajax経由でファイルを送信しようとしていますか?もしそうなら、あなたは指示を傾ける。 iframeを使用したり、Flashを読み込んだり、FileReaderでファイルのデータを読み込んだり、ajaxリクエストでrawデータを送信したりすることができます。

+0

私はAJAJX経由でファイルを送信しようとしていません。私はちょうど入力フィールドを持ち込み、それを

に植えるだけです。その後、通常のPOSTフォームの送信に過ぎません。 – efru

1

$ .postまたはform.submit()を使用しているかどうかは不明です。 form.submit()を使用している場合は、別の何かが間違っている可能性があります。

それ以外の場合は、AJAX経由でサーバーにファイルを送信するには、Form Dataオブジェクトを使用する必要があります。

このMDNページUsing FormDataObjectsには、使用方法に関する良い例があります。 jQueryを使用する場合、processDataおよびcontentTypeをfalseに設定する必要があることに注意してください。以下を参照してください(MDNページから取得)。

var fd = new FormData(document.getElementById("fileinfo")); 
fd.append("CustomField", "This is some extra data"); 
$.ajax({ 
    url: "stash.php", 
    type: "POST", 
    data: fd, 
    processData: false, // tell jQuery not to process the data 
    contentType: false // tell jQuery not to set contentType 
}); 
+0

私はAJAX経由でファイルを送信しません。私は入力フィールドを持ち込み、自体に植え付けています。その後、通常のPOSTフォームの送信に過ぎません。 – efru

+0

あなたが助けることができるようにいくつかのコードを投稿したいかもしれません。あなたがそれを使用していない場合は、http://jsfiddle.net/あなたのコードを投稿するための本当に良い場所です。 –