相关疑难解决方法(0)

如何在jQuery中使用Ajax请求发送FormData对象?

XMLHttpRequest的2级标准(还是工作草案)定义FormData的接口.此接口允许将File对象附加到XHR请求(Ajax请求).

顺便说一句,这是一个新功能 - 在过去,使用了"隐藏iframe技巧"(在我的另一个问题中阅读).

这就是它的工作原理(例子):

var xhr = new XMLHttpRequest(),
    fd = new FormData();

fd.append( 'file', input.files[0] );
xhr.open( 'POST', 'http://example.com/script.php', true );
xhr.onreadystatechange = handler;
xhr.send( fd );
Run Code Online (Sandbox Code Playgroud)

where input是一个<input type="file">字段,handler是Ajax请求的成功处理程序.

这在所有浏览器中都很漂亮(除了IE之外).

现在,我想使这个功能与jQuery一起使用.我试过这个:

var fd = new FormData();    
fd.append( 'file', input.files[0] );

$.post( 'http://example.com/script.php', fd, handler );
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用(抛出"非法调用"错误 - 截图在这里).我假设jQuery需要一个表示form-field-names/values的简单键值对象,而FormData我传入的实例显然是不兼容的.

现在,由于可以将FormData实例传入xhr.send(),我希望它也可以使它与jQuery一起使用.


更新:

我在jQuery的Bug Tracker上创建了一个"功能票".它在这里:http://bugs.jquery.com/ticket/9995

我被建议使用"Ajax prefilter"...... …

javascript ajax jquery html5 multipartform-data

468
推荐指数
6
解决办法
73万
查看次数

Laravel使用Ajax上传文件

我正在使用Laravel框架.我有一种向数据库添加新项目的形式,用户也可以拖放文件.然后,显示进度条直到完成,使用Ajax将文件上载到服务器.

提交该表单后,我addItem在控制器中运行该函数,我想做/检查:

  1. 该文件已托管在服务器中(成功上载)
  2. 如果文件托管在服务器中,我该如何找到它?(我给它一个随机的名字)
  3. 如果用户选择不提交表单,我希望从服务器中删除该文件,因此我不会将文件连接到我的数据库中的任何项目

您能否就如何完成这些任务提出任何建议?

php ajax jquery file-upload laravel

2
推荐指数
1
解决办法
1万
查看次数