2

「私は単純なフォームを持っていて ajax で投稿していますが、php スクリプトで $_FILES を取得できません」

<form id="submitForm" method="post" enctype="multipart/form-data" >
     <input type="file" name="file"  />
     <input type="text" name="name" />
    </form>

以下はajaxコードです。どこが間違っているか教えてください

$.ajax({
                url: '<?php echo base_url(); ?>getter/addItemRow',
                type:"POST",
                data:$('#submitForm').serialize(),
                context: $('#table')
                }).done(function(data) {
                  this.prepend(data);
                });

以下はphpコード行です

print_r(var_dump($_FILES));

これは空の配列を返しています。

4

5 に答える 5

3

AJAX / JavaScript を使用してファイルを転送することはできません。

単なるJavaScriptであるAJAXは、ファイル システムに保存されているファイルにアクセスしてサーバーに転送することはできません。これを行うには、非表示の iframe を使用できます。フォームを AJAX のように見せたり、ファイルのアップロードをサポートしたりすることができる素敵なjquery フォーム プラグインがあります。

このプラグインで使用されるコードは非常に単純です。

$(function() {
    $('#formid').bind("submit", function(){
        $(this).ajaxForm(function(result) {
            alert('the form was successfully posted!');
        });
    });
});
于 2012-10-17T06:19:10.603 に答える
2

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

http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html

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

于 2012-10-17T06:17:24.250 に答える
1
<script src="http://malsup.github.com/jquery.form.js"></script> 


$(function() { 
    $('#submitForm').ajaxForm(function(result) {
                    $("#HiddenRowsa").hide();
                    $('#table').prepend(result);
                }).submit();
         });

私が得たすべての答えはすべて同じで正しいものでした。これは機能する単純なjqueryコードです。ここで提供されているすべてのリンクには、ajaxFormの.submit()関数がありませんでした。この種の問題の場合、最初に上記のファイルを先頭にインクルードしてから、上記のコードを記述します

于 2012-10-18T07:44:39.223 に答える
0

ここに別の解決策があります。ファイルをすぐにアップロードしたい場合は、ajaxForm を使用してください。次のリンクでは、ajaxForm が呼び出されていません

メソッドの詳細を知るための ajaxForm のリンクは次のとおりです: http://jquery.malsup.com/form/#ajaxForm

于 2012-10-17T06:18:10.823 に答える
0

$_FILES はグローバルな PHP 変数であり、javascript とはまったく関係がないため、jQuery は単純な AJAX で PHP ファイルを処理することはできません。jQuery File Uploadなどのプラグインを使用できます。グーグルで検索して見つけてください。

iFrame を使用することもできますが、IE ではページが変更されたような不快なクリックが発生するため、お勧めしません。

于 2012-10-17T06:15:35.723 に答える