0

jQuery$.postメソッドを使用してサーバーに送信するフォームがあります。私は次のようなものでいくつかのフィールドを送信しています:

var myName = "Pedro";
var myDescription = "Description of Pedro";

$.post("~/insert_user", { name: myName, description: myDescription }, function(data){
    alert("Successfully inserted " + data.name + " in DB");
}, "json");

これは、データベースに値を取り、insert_user.php処理して挿入するので、うまく機能します。

ユーザーが画像をアップロードできるようにフォームにフィールドを追加する必要がある場合はどうなりますか?

通話でそれをどのように行う$.postのでしょうか。また、PHPでどのように取得するのでしょうか。

ちなみに、何かが変わった場合に備えて、Symfony2.0を使用しています。しかし、重要な部分は、ファイル型フィールドをajax呼び出しに追加する方法です。

前もって感謝します。

ペドロ

4

4 に答える 4

1

ビルド済みの jquery プラグインを使用する方がはるかに簡単であることがわかります。私のお気に入りは、uploadify http://uploadify.comです。

シンプルで使いやすく、独自の方法を見つけようとする時間を大幅に節約できます <>

$.post は以下のコード ブロックと同じです。必要なことを行うには、少なくともこれを使用するように変更する必要があります。そうすれば、物事はより簡単になります。$.post をこれに変更することから始めます

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

次に、ajax ブロックの contentType にパラメーターを追加します: "multipart/form-data" または mimeType を試して (あまり明確に覚えていません)、データに $("#form").serialize() を追加すると、うまくいくはずです。

うまくいかなかったら教えてください

--NEW EDIT LOL--ブラインドコーディングですみません、これをテストする必要があるかもしれません

私はもう少し調査を行い、これに出くわしました。この配列を構築し、それを ajax ブロックのデータに追加する必要があります

var files = new FormData($('#fileinputid'));     
jQuery.each($('#fileinputid')[0].files, function(i, file) {
    files.append(i, file);
});

私が読んだものが正確であれば、その配列を残りのajaxデータとともに渡すことができるはずです。シリアル化されたデータに追加する方法は完全にはわかりませんが。

これをテストして、私に知らせてください。うまくいかない場合は、完全な JavaScript スクリプト テストを実行してから、ここに投稿してください。

于 2012-10-03T11:32:00.520 に答える
0

このチュートリアルは役立つかもしれません:Nettuts +:AJAXを使用したファイルのアップロード

于 2012-10-03T11:05:50.580 に答える
0

私は最終的にこれを使用しました:

http://malsup.com/jquery/form/#faq

それは私が必要とするものにぴったりです。

助けてくれてありがとう。

于 2012-10-06T18:51:14.947 に答える
0

iframe を作成してフォームを入れ、フォームを送信すれば出来上がりです。または、これらのAJAX ファイル アップロード スクリプトのいずれかを使用できます。

于 2012-10-03T11:17:26.917 に答える