2012-05-08 4 views
1

jQueryの$.ajax関数を使用してファイルをアップロードしようとしていますが、出力が得られませんでした。 誰かがこれを解決するために私を助けてください。 このスクリプトが正しいかどうかわかりません。 私のスクリプトは次のとおりです。

$.ajax({ 
    url:'newsup.php', 
    data: "", 
    type: 'POST', 
    contentType:'multipart/form-data', 
    dataType: 'json', 
    catche: 'false', 

    success:function(data6) 
    { 
    $("#disp").removeClass().addClass((data6.error=== false)? 'success':'error').html(data6.msg).fadeIn('fast'); 
    //dele(); 
    if($("#disp").hasClass('success')) 
    { 
     alert("success"); 
     setTimeout("$('#disp').fadeOut('slow')",3000);    
    } 
    }, 

    error:function(XMLHttpRequest,textStatus,errorThrown) 
    { 
    $("#disp").removeClass().addClass('error').html("There was an <strong>"+errorThrown+"</strong> error due to <strong>"+textStatus+" condition").fadeIn('fast'); 
    }    

}); 

また、私はjQueryのを使用してファイルのアップロードフィールドからデータを取得助けが必要。

+0

をAJAX形式のフォームアップロードの例については、plupload(http://www.plupload.com/)を参照してください。埋め込みiframeを使用して目に見えないフォームを送信することなく、通常の投稿を使用して1つのページにファイルを含むフォームを送信することは非常に困難です。 PluploadもjQueryと非常によく似ています(少なくとも私の経験でした)。 –

+0

あなたはこれについてどんなGoogleをやったことがありますか?私は有用な結果がたくさん来ることを願っています。それらのうちの1つhttp://www.phpletter.com/Demo/AjaxFileUpload-Demo/ –

+0

大丈夫であればhttps:// githubを使用すれば、よくテストされたjqueryプラグインがあります。com/blueimp/jQuery-File-Upload –

答えて

2

AJAXはファイルのアップロードをサポートしていません。基本的に隠しフォームを作成し、ファイルを動的にアップロードするプラグインはajaxfileuploadです。

は、このためのプラグインを使用してください見hereを取ると、オリの答え

+0

私の質問に答えていただき、ありがとうございました。 – JOE

6

をお読みください。
私の意見では、このプラグインはthis.Youのためのより良い解決策です。あなたは 'ajaxForm'にあなたの 'aj​​ax'を置き換えるなど、すべてのオプションetc.を覚えておく必要はありません。


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

+1

私はこのプラグインが大好きです。私は開発するすべてのウェブサイトでそれを使用します。このプラグインがうまくいけば、手動でフォームをAJAXして時間を浪費することはありません。 – xbonez

+0

malsups $ ajaxFormプラグインを試しましたが、変数に格納されているデータを '$ ajaxForm()'関数に渡すことはできません。これは '$( '#myForm1')。ajaxForm(options);'のようなフォームから直接データを取得することによってのみ機能します。どうすればこの問題を克服できますか? – JOE

+0

@JOSEPHPAULより詳しい情報を提供できますか?(あなたのコード) – Oyeme

0

は、単にファイルを送信し、デフォルトのフォームアクション

$('#form').submit(function(e) { return false; });

を防ぐために、フォーム上のイベントを提出し、サーバー上のファイルを取得する使用役に立てば幸い側経由で

$_FILES['inputName']; 
2

これが私のやり方です。 FormDataオブジェクトを使用します。

注:for文の奇妙な構文は、配列[i]に "f"を設定するだけです。

残念ながら、私はこれをどの記事から取得したのでしょうか?それはスタックオーバーフローの誰かでした。

1

下記参照以外のすべての主要なブラウザでサポートしています。また、いるFormDataオブジェクトを使用して、ファイルのアップロードをサポートしています。

$('#btnUploadFile').on('click', function() { 
       var data = new FormData(); 
       var files = $("#fileUpload").get(0).files; 

       // Add the uploaded file content to the form data collection 
       if (files.length > 0) { 
        data.append("upload", files[0]); 
       } 

       // Make Ajax request with the contentType = false, and procesDate = false 
       var ajaxRequest = $.ajax({ 
        type: "POST", 
        url: "/api/documents", 
        contentType: false, 
        processData: false, 
        data: data, 

        error: function (xhr, status, error) { 
         console.log(xhr); 
         console.log(status); 
         console.log(error); 
         console.log(data); 
        } 
       }); 

       ajaxRequest.done(function (xhr, textStatus) { 
        $("#response").attr('class', "alert alert-success"); 
        $("#response").html("File uploaded successfully"); 
       }); 


      }); 
+0

こんにちは、どのように画像とデータを同時に扱うことができます..? – gayan1991

+1

@ gayan1991 'multipart/form-data'というリクエスト/フォームを作ることができます。https://stackoverflow.com/questions/4526273/what-does-enctype-multipart-form -data-meanも役立つかもしれません –

関連する問題