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

文件上传不能使用 XmlHttpRequest 对象完成,该对象传统上被认为是 AJAX。大多数人在尝试创建和异步文件上传时采用的方法是提交表单并以iframe. 我建议使用像Uploadify这样的 javascript 库。

也有许多 JQuery 插件可以帮助您解决这个问题。快速的谷歌搜索应该会给你很多选择。

于 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 回答