0

一部のコードをjavascriptからjqueryに変換しようとしています。

Javascriptコード:(私はこのコードをここに持っています)

window.onload = function () {
    document.getElementById('uploader').onsubmit = function () {
        var formdata = new FormData(); //FormData object
        var fileInput = document.getElementById('fileInput');
        //Iterating through each files selected in fileInput
        for (i = 0; i < fileInput.files.length; i++) {
            //Appending each file to FormData object
            formdata.append(fileInput.files[i].name, fileInput.files[i]);
        }
        //Creating an XMLHttpRequest and sending
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/Home/Upload');
        xhr.send(formdata);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                alert(xhr.responseText);
            }
        }
        return false;
    }
}

JQuery コード: (私のアプリケーションによると)

 $('#AutoUploadFiles').click(function () {

        var formdata = new FormData();
        var fileInput = $("#AutomaticUploader");

        for (var i = 0; i < fileInput.get(0).files.length; i++) {
            formdata.append(fileInput.get(0).files[i].name, fileInput.get(0).files[i]);
        }

        $.ajax({
            url: '/members/AutoUploadFile',
            type: 'post',
            data: formdata,
            success: function () {

            },
            error: function () {

            }
        });
    });

上記の JQuery コードを実行しようとすると、jquery.min.js ファイルで「Illegal Invocation」エラーが発生します。

私は Web プログラミングに慣れていないので、JQuery への変換中にいくつか間違いを犯した可能性があります。誰かが間違いを見つけたら、私を導いてください。

4

2 に答える 2

1

ファイルオブジェクトをJSONエンコードできないため、XHR経由でファイルを送信している場合、受け入れられた答えは機能しません。唯一の「回避策」は、jQuery の XHR データ処理を無効にすることです。

グローバルに無効にするには

$.ajaxSetup({processData:false});

またはする

$.ajax({
  ... Ajax Stuff Here,
  processData: false
});

リクエストごとに。

于 2014-08-07T14:03:32.377 に答える
1

問題はformdataオブジェクトであり、通常の文字列としてシリアル化できないことです

  var formdata = new FormData();

そしてあなたのコードで

type: 'post',
data: formdata, //<-- this is the problem
success: function () {

formdata 有効なjsonデータと同様にシリアル化する必要があります。そうしないと送信できません$.ajax()。そのため、jqueryバージョンが機能しません。Google にはたくさんの jquery アップローダー スクリプトがあるので、他の jquery アップローダー スクリプトを試してください。

于 2013-09-20T10:23:17.353 に答える