0

Ajax経由ですべてのパラメータに送信したフォームがありますが、フォームデータは送信しません。私の質問は、ajax経由でフォームデータを送信する方法です

html コード:

<from action="" method="post" enctype="multipart/form-data">
   <input type = "file" name = "adrfile" />
   <input type = "button" value="Upload" onclick="javascript: upload();" />
</form>
4

2 に答える 2

2

ファイルのアップロードは、伝統的に AJAX と見なされている XmlHttpRequest オブジェクトでは実行できません。ファイルのアップロードを作成して非同期にしようとするときにほとんどの人がとるアプローチは、フォームを送信してiframe. Uploadifyのような JavaScript ライブラリを使用することをお勧めします。

これに役立つJQueryプラグインも数多くあります。Google で簡単に検索すると、多くのオプションが表示されます。

于 2013-02-07T18:07:15.123 に答える
1

頭痛の種が必要な場合は、さまざまなブラウザー (つまり、Firefox、IE、Safari、Opera の最新バージョン) で実行できます。

JS summat のようなコードが必要です (ここで、obj はinput type="file"アイテムのオブジェクトです:

function DoReadFile(obj)
  {
    if (obj.files)
    {
      // Sensible browers
      if (1 == obj.files.length)
      {
        var file = obj.files[0];
        try {
          return obj.files[0].getAsBinary();
        }
        catch (error)
        {
           // Blank
        }
      }
    }
    else
    {
      // IE
      try
      {
        var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
        var fileHandle = fileSystem.OpenTextFile(obj.value, 1);
        var contents = contents.ReadAll();
        contents.Close();
        return contents;
      }
      catch (error)
      {
        // Blank
      }
    }
    throw "Cannot read file";
  }

その後、JS でデータ (base 64 など) を暗号化し、他のものと一緒に投稿として送信できます。ただし、マルチパート フォームにすることはできません。

しかし、それは少し時間の無駄です。

于 2013-02-07T18:25:28.470 に答える