终于搞定了 django 的 ajax 方式上传图片
来源:互联网 发布:气体比热容比实验数据 编辑:程序博客网 时间:2024/05/05 14:54
======================================================
注:本文源代码点此下载
======================================================
今天终于搞定了 django 的 ajax 方式上传图片。
客户端我用的是 jquery 的插件ajaxfileupload, 其原理是动态创建一个 iframe 和一个 form, 将控件的内容插入到 form 中,然后向那个 iframe 提交。当然这里 iframe 通过样式设置为不可见的了。
调试的过程中出现了很多低级错误,但因为 ajax 方式很难调试,花费了不少的时间才搞定,中间连 visual studio 2005 都用上了,用于调试 javascript. 下面把错误记录下来给自己以后提个醒:
1. fileelementid 注意不要在前面加上 '#', 否则会找不到控件(用 jquery 时间久了很容易犯这个错误)。
2.控件一定要加上 name 属性!因为这个没加表单将不会发送任何有效的文件数据。低级错误啊~
3. 其他需要在文件上传时同时发送的字段,可以考虑拼接成一个字符串,加到 url 里面用 get 的方式发送到服务器。当然,要记得字段内容用 encodeuricomponent 函数预先处理。
下面附上一点主要的客户端调用代码:
$.ajaxfileupload
(
{
url:'/popup/note/image_upload/?' + postdata,
secureuri: false,
fileelementid: fileelementid,
datatype: 'json',
success: function (data, status)
{
if(typeof(data.error) != 'undefined'){
if(data.error != '')
alert(data.error);
else
alert(data.msg);
}
},
error: function (data, status, e)
{
alert(e.description);
for(k in data) alert(data[k]);
alert(status);
}
}
)
有的时候文件的 name 是动态产生的,那么在服务器端, django 的 view 中,可以改用一种办法来获取上传文件的内容,而不需要知道控件的 name:
file_obj = request.files.values()[0]
而我们平常写的最多的是这样的:
file_obj = request.files.get('file1', none)
尚待解决的问题:
ajaxfileupload 插件提供了一个简单的 ajax 等待提示功能,大致是这样的:
$(divid + " .loading").ajaxstart(function(){
$(this).show();
}).ajaxcomplete(function(){
$(this).hide();
});
其原理就是用一个“等待中...” 类似的 gif 动画图标,当开始请求的时候显示,请求完了隐藏掉。
但是我发现它触发 ajaxstart, ajaxcomplete 事件的时候,都是用的一种全局的机制,这会导致一个奇怪的事情,就是假如页面上有多个类似的上传表单(但是其中等待提示图标的 id 不同)时,提示的图标好像会乱掉,不该显示的显示。因为对 jquery 插件机制还不熟悉,这个问题有待研究解决。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- 终于搞定了 django 的 ajax 方式上传图片
- 终于搞定了 django 的 ajax 方式上传图片
- 学习了 django 的 ajax 方式上传图片
- 终于搞定了jquery的ajax提交数据
- 上传图片终于成功了
- 一个线程的问题,终于搞定了。
- 终于搞定了Redhat9的完全安装!
- 终于搞定了MapX的专题地图
- 终于把Xgl的compiz 搞定了
- 郁闷很久的问题终于搞定了
- jsp的作业终于搞定了。。。
- obm 的merge工作终于搞定了
- 终于搞定U盘挂载的问题了!!
- 终于搞定了sis的显卡驱动
- 终于搞定了hadoop集群的配置
- 开发板的原理图终于搞定了
- 终于搞定了mysql!
- 终于搞定了vmware
- 关于ASP.NET的AJAX
- IE,谷歌,遨游,火狐兼容的万能合并单元格方法
- CMMI
- Java版远程控制V1.0
- android之TabHost
- 终于搞定了 django 的 ajax 方式上传图片
- 图形界面库Windows Forms、 MFC、WTL、WxWidgets、Qt、GTK 综合比较
- 黄聪:Jquery+php+ajax实现表单异步提交,动态添加回复评论
- android之ViewFlipper
- 用Delphi编写WebService的心得体会.
- 手把手教delphi:写你的dll文件(2)
- ERP之采购请购单
- js操作select 添加 删除 修改 清空 选择 获取
- itunes store 截图