2

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を使用してファイルアップロードフィールドからデータを取得するためのサポートが必要です。

4

8 に答える 8

6

これにはプラグインを使用してください。
私の意見では、このプラグインはこれに対するより良い解決策です。すべてのオプションなどを覚えておく必要はありません。「ajax」を「ajaxForm」に置き換えるだけです。

以下の例をお読みください
http://jquery.malsup.com/form/#ajaxForm

于 2012-05-08T05:57:41.113 に答える
3

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

注:forステートメントの奇妙な構文は、array[i]インスタンスに「f」を設定するだけです。

        $("#submit").click(function () {
            var formData = new FormData();
            for (var i = 0, f; f = fileArray[i]; i++) {
                formData.append("opmlFile", f);
            }
            $.ajax({
                url: "/Documents/SaveFiles/" + @Model,
                type: "POST",
                data: formData,
                cache: false,
                contentType: false,
                processData: false
            })
            .error(function (xhr, status, error) {
                $.notify(error, true);
            })
            .success(function (data, status, xhr) {
                $.notify("Success");
            });
        });

残念ながら、これをどの記事から入手したかは思い出せませんが、StackOverflowの他の誰かでした。

于 2014-06-16T22:00:55.567 に答える
2

AJAXはファイルのアップロードをサポートしていません。基本的に非表示のフォームを作成し、ファイルを動的にアップロードするajaxfileuploadのようなプラグインがあります。

ここを見て、オリの答えを読んでください

于 2012-05-08T05:10:42.217 に答える
2

私はこれを使用していて、正常に動作しています:

  $('#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");
                });


            });
于 2015-04-16T18:30:31.750 に答える
1

2つのプラグインJqueryFileUploadPlugins1またはJqueryFileUpload Plugins 2のいずれかを使用でき、このスクリプトにエラーはありません。

それが役に立てば幸い

ありがとう、ラシッド

于 2012-05-08T06:02:35.810 に答える
1

Ajaxは、FormDataオブジェクトを使用したファイルのアップロードをサポートし、IE8/9を除くすべての主要なブラウザーでもサポートします。以下を参照してください。

https://developer.mozilla.org/en-US/docs/Web/API/FormData

于 2014-07-04T09:02:04.493 に答える
0

もう1つのオプションは、ファイルの内容をbase64でエンコードして文字列として送信し、バックエンドでデコードすることです。

于 2020-05-11T18:32:14.223 に答える
-1

フォームの送信イベントを使用してファイルを送信し、デフォルトのフォームアクションを防止するだけです

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

サーバー側でファイルを取得します

$_FILES['inputName'];
于 2013-04-02T08:58:11.030 に答える