javascript - 普通的 $.post() 传递字符串和传递文件有什么区别?

标签 javascript jquery asp.net-mvc jquery-plugins

我想知道为什么我无法使用 $.post() 方法在 JQuery 中上传文件?

有什么方法可以调整请求来处理这个问题吗?

$.post(url, { file: fileName, path: "/uploads" }, function (result) {});

最佳答案

I am wondering why i can't upload a file in JQuery using the $.post() method?

这是因为为了上传文件,您需要使用 multipart/form-data协议(protocol)意味着请求正文需要以与 jQuery 使用的标准形式 POST 完全不同的方式呈现: application/x-www-form-urlencoded (在 POST 正文中用 & 分隔的键/值对)。更不用说为了在请求中写入文件内容,您需要访问文件内容,正如您所知,在 javascript 中根本不是这样的。

但不要失去所有希望。 future ,与XmlHttpRequest2和 HTML5,您将能够使用 AJAX 上传文件。

在这个 future 到来之前(顺便说一句,一旦我们摆脱了 IE<=9,这应该不会那么遥远)坚持使用现在存在的东西:检测浏览器功能并使用 XHR2 的文件上传插件如果浏览器支持它以及其他一些技术(例如隐藏的 iframe 或 Flash,如果不支持),并减轻您自己手动执行此操作的负担。

所以,继续吧,Google,制定一个愿望 list :

然后继续尝试演示,阅读文档,选择适合您需求的一个,并尝试将其在您的网站中付诸实践。如果您遇到一些具体问题,请随时询问。

但不幸的是,今天不能使用 $.post 上传文件。

关于javascript - 普通的 $.post() 传递字符串和传递文件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691355/

相关文章:

javascript - 如何从此脚本之外刷新日历?

javascript - 隐藏 div 上的 JQuery 切换无法正常工作

jquery - 限制 jQuery 可拖动项目与同级元素重叠/碰撞

javascript - 在另一个 div 旁边显示相对位置的 div

asp.net-mvc - 为什么我的 MVC 应用程序试图以我的机器而不是应用程序池身份登录我的数据库?

javascript - 切换隐藏/显示 div 适用于按钮,但不适用于链接?

javascript - 如何在每个窗帘在中间相遇后添加延迟滚动?

javascript - 如何获取渲染后的DIV的宽度和高度?

Javascript 主函数在内部子函数之前首先触发

asp.net-mvc - 如何在 ASP.NET MVC Razor 中使用嵌套内联模板?