【发布时间】:2011-06-18 22:04:45
【问题描述】:
我似乎没有清楚地表达我的问题。我需要发送一个文件(使用 AJAX),我需要使用Nginx HttpUploadProgressModule 获取文件的上传进度。我需要一个好的解决方案来解决这个问题。我曾尝试使用 jquery.uploadprogress 插件,但我发现自己必须重写大部分内容才能使其在所有浏览器中工作并使用 AJAX 发送文件。
我需要的只是执行此操作的代码,并且它需要在所有主流浏览器(Chrome、Safari、FireFox 和 IE)中工作。如果我能得到一个可以处理多个文件上传的解决方案,那就更好了。
我正在使用jquery.uploadprogress plugin 从 NginxHttpUploadProgressModule 获取文件的上传进度。这是在 facebook 应用程序的 iframe 中。它在 Firefox 中工作,但在 chrome/safari 中失败。
当我打开控制台时,我得到了这个。
Uncaught ReferenceError: progressFrame is not defined
jquery.uploadprogress.js:80
知道如何解决这个问题吗?
我还想在文件完成后使用 AJAX 发送文件。我将如何实现它?
编辑:
我很快就需要这个,这很重要,所以我将在这个问题上悬赏 100 分。第一个回答的人将获得 100 分。
编辑 2:
Jake33 帮我解决了第一个问题。第一个回答如何使用 ajax 发送文件的人也将获得 100 分。
【问题讨论】:
-
我看到它使用浏览器嗅探来检测 Safari(浏览器嗅探通常是不受欢迎的),所以 progressFrame 仅与 Safari/Chrome 一起使用(我不知道为什么)。发生错误的部分似乎是脚本试图引用 progressFrame 的地方,只是通过在全局范围内查找其名称而不是使用像
document.getElementsByName这样的函数。 -
我不知道你说的“完成后使用AJAX发送”是什么意思——进度条不代表提交的进度吗?这不是说一旦完成就已经发送了吗?您的意思是希望原始表单提交由 AJAX 驱动,这样之后不会导致页面刷新?
-
是的。是的,但它的作用类似于表单提交。这正是我想要的。
-
如果问题是如何使用 jQuery 通过 XMLHttpRequest 通过 HTTP POST 发送数据,那么有jQuery.post
-
下面的答案对你有用吗?如果没有,您能否评论答案。由于所有的编辑,我有点困惑,并想尝试解决您的问题。谢谢。顺便说一句,我包含了 JQuery 的多文件上传插件的链接。
标签: ajax jquery file-upload nginx